Удалить элементы из массива по имени

1

Я хотел бы знать, как удалить boats из моего массива.

var obj = [
    { car: 1, boat: 2, plane: 3  },
    { car: 3, boat: 9, plane: 12  }
];


// Desired output
[
   { car: 1, plane: 3 },
   { car: 3, plane: 12 }
];

Я попытался использовать Array.prototype.filter()

console.log(obj.filter(el => el (how to get el name) === 'boat'));
  • 1
    Вы хотите obj.map( ({car, boat, plane}) => ({car, plane}) ) . Вы не хотите фильтровать массив, вы хотите создавать разные объекты
Теги:
ecmascript-6
arrays

3 ответа

0
Лучший ответ

Если вы хотите создать новый массив и не изменять существующий массив:

var obj = [
    { car: 1, boat: 2, plane: 3  },
    { car: 3, boat: 9, plane: 12  }
];

var newArr = obj.map(e => ({car: e.car, plane: e.plane}));
// newArr = [{car: 1, plane: 3},{car: 3, plane: 12}]
  • 0
    правильно, я не хочу изменять свой существующий массив. @sidanmor - как это можно масштабировать, если есть более 50 свойств?
0

Просто удалите его

obj.forEach(function(el){
  delete el.boat;
})
//"[{"car":1,"plane":3},{"car":3,"plane":12}]"
0

Вы не удаляете элементы из массива; вместо этого вы хотите удалить свойства из существующих объектов, которые являются элементами массива.

Используйте оператор delete для удаления свойств объектов. Поскольку вы не удаляете элементы из массива, вам не нужно будет использовать filter:

for( var i = 0; i < obj.length; i++ ) {
    delete obj[i]['boat'];
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню