код:
const furniture = [
{ id: 1, type: 'chair', price: 52},
{ id: 2, type: 'chair', price: 76},
{ id: 3, type: 'table', price: 48},
{ id: 4, type: 'table', price: 52},
{ id: 5, type: 'chair', price: 32},
{ id: 6, type: 'cupboard', price: 52},
{ id: 7, type: 'chair', price: 88},
{ id: 8, type: 'cupboard', price: 66},
{ id: 9, type: 'chair', price: 52},
{ id: 10, type: 'cupboard', price: 88},
];
function indexFunc() {
furniture.forEach(function (item) {
if (item.type === 'chair') {
console.log('chair index: ',item.id)
furniture.splice(item.id, 1)
}
});
}
indexFunc();
console.log(furniture);
или ссылка: https://jsfiddle.net/eubznfj0/2/
Почему forEach выводит не все объекты, а splice удаляет не то? Что я делаю не так?
У вас id элементов с единицы идет. Может поэтому
var nochair = furniture.filter( item => item.type !== "chair" );
даже если поменять, результат не тот(
сплайс мутирует исходный массив, поэтому когда ты удаляешь первый элемент и переходишь ко второму, второй элемент уже стал первым, а работаешь ты теперь с третьим
спасибо, можете подсказать еще, пожалуйста, как можно умножить цену на 2 у объектов типа cupboard? это идет как продолжение задания
спасибо за разъяснение, очень помогли)
почитай про методы массивов и в частности .map
nochair.forEach((item)=>{ if (item.type === "cupboard"){ item.price = item.price * 2; } })
спасибо огромное! извиняюсь за тупой вопрос, глаз замылился)
Обсуждают сегодня