Как удалить элемент массива с определенным значением?
Есть массив объектов.
var massiv =[{name:'Black', value :'a'},
{name:'Blue',value :'a'},
{name:'Blonde',value :'b' },
{name:'Alabaster', value :'b'},
{name:'Red', value :'a'}];
Есть переменная edinica = 1.
Как удалить элементы массива со значением value :'b'при условии, что переменная edinica = 1?
Ответы (1 шт):
Автор решения: Михаил Камахин
→ Ссылка
Можно написать всё самому, вручную
const arr = [
{name:'Black', value :'a'},
{name:'Blue',value :'a'},
{name:'Blonde',value :'b'},
{name:'Alabaster', value :'b'},
{name:'Red', value :'a'}
];
function cycle(arr) {
for (let i = 0; i < arr.length; i++) { // пройтись по все элементам массива
if (typeof(arr[i]) === 'object' && arr[i].value === 'b') { // если элемент массива является объектом, и у этого объекта поле value равняется 'b' и является строкой
arr.splice(i, 1); // удалить элемент из массива
i--; // уменьшить итератор на единицу
}
}
return arr; // вернуть массив как результат выполнения функции
}
let number = 1;
let newArr;
if (number === 1) { // если переменная number равняется 1 и является числом, то выполнять код
newArr = cycle(arr); // newArr равняется результату выполнения функции cycle
console.log(newArr);
}
Или можно использовать функцию filer, которая встроена в массивы JavaScript:
const arr = [
{name:'Black', value :'a'},
{name:'Blue',value :'a'},
{name:'Blonde',value :'b'},
{name:'Alabaster', value :'b'},
{name:'Red', value :'a'}
];
let number = 1;
let newArr;
if (number === 1) { // если переменная number равняется 1 и является числом, то выполнять код
newArr = arr.filter((item) => typeof(item) === 'object' && item.value !== 'b'); // отфильтровать массив, в котором подходить под условие будут только те объекты у которых поле value не равняется 'b' и не является строкой
console.log(newArr);
}