Оставить в объектах массива ключи согласно списку
Всем привет! Хочу создать новый массив объектов без поля gender. В чем ошибка?
let collections = [
{ name: "Tom", gender: "male", age: 12 },
{ name: "Becky", gender: "female", age: 11 },
{ name: "Huck", gender: "male", age: 13 }
];
let newCollections = collections.slice();
let operations = {
select: function () {
let args = [].slice.call(arguments);
for (let i = 0; i < newCollections.length; i++) {
for (let key in newCollections[i]) {
for (let j = 0; j < args.length; j++) {
if (key !== args[j]) {
delete key;
return newCollections;
}
}
}
}
}
};
operations.select("name", "age"); //список полей, который нужно оставить
Ответы (1 шт):
Автор решения: Rudi
→ Ссылка
В общем, у тебя let newCollections = collections.slice(); ничего с массивом не делает. delete key; так же ничего не удаляет и на первой итерации в for (let i = 0; i < newCollections.length; i++) {, ты выходишь из функции возвращая return newCollections;
let collections = [{
name: "Tom",
gender: "male",
age: 12
},
{
name: "Becky",
gender: "female",
age: 11
},
{
name: "Huck",
gender: "male",
age: 13
}
];
let operations = {
select: function() {
let args = [].slice.call(arguments)
for(var i = 0; i < collections.length; i++) {
for(var key in collections[i]){
if(!args.includes(key)){
delete collections[i][key]
}
}
}
return collections
}
};
console.log(operations.select("name", "age")); //список полей, который нужно оставить