#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);