Лучший способ скопировать перечисляемые собственные свойства из массива объектов в другой массив объектов класса

#javascript

Вопрос:

Допустим, у меня есть этот массив объектов :

  let x = [{Id:1,Name:"abc",Age:""},{Id:2,Name:"def",Age:""}] ; 
 

Как я могу скопировать все его объекты в массив объектов класса, не зацикливаясь на всех элементах и не помещая их в новый массив примерно так :

 class ClientModel
 {

      constructor(){
        this.Id = null ; 
        this.Name = null ; 
      }
      
}


let x = [{Id:1,Name:"abc",Age:""},{Id:2,Name:"def",Age:""}] ; 
let y = new Array() ; 

x.forEach(elem =>y.push(Object.assign(new ClientModel(),elem))); 
 

Комментарии:

1. что именно вы имеете в виду под copy all its objects to an array of class objects этим ?

2. Как вы «копируете все его объекты … без зацикливания на всех элементах» ?

Ответ №1:

Вы можете предоставить значимый конструктор для ClientModel массива данных и map массива данных, как это:

 class ClientModel {
    constructor(data) {
        this.Id = data.Id;
        this.Name = data.Name;
    }
}

let array = [{Id: 1, Name: "abc", Age: ""}, ....
let objects = array.map(d => new ClientModel(d))
 

Ответ №2:

Так или иначе, вам нужно зациклить исходный массив, но просто используйте map и деконструкцию объектов, чтобы облегчить жизнь.

 let x = [{Id:1,Name:"abc",Age:""},{Id:2,Name:"def",Age:""}] ; 

class ClientModel
 {

      constructor(id, name){
        this.Id = id ; 
        this.Name = name ; 
      }
      
}

let y = x.map(({Id,Name}) => new ClientModel(Id,Name))
console.log(y);