Моя цель здесь - создать функцию, которая будет принимать текстовое значение, l oop через массив объектов и удалять соответствующий элемент. Однако я обнаружил, что этот код не удаляет элемент, если это первый экземпляр (индекс 0), а в экземпляре, который он выполняет, удаляет только первое совпадающее значение, а не другие.
const cats = [{
name: `catOne`,
color: `orange`
}, {
name: `catTwo`,
color: `Grey-white`
}, {
name: `catThree`,
color: `Grey-white`
}]
const deleteColor = function (arrayOfObjects, clr){
const index = arrayOfObjects.findIndex(function(e, i){
if (e.color.toLowerCase() === clr.toLowerCase()){
return i;
}
})
if (index >= -1 ){
arrayOfObjects.splice(index,1)
}
}
deleteColor(cats,'grey-white')
cats.forEach(function(e, i) {
console.log(e, i) })
Вывод:
{ name: 'catOne', color: 'orange' } 0
{ name: 'catThree', color: 'Grey-white' } 1
Но если я изменю ввод текста на «оранжевый», вывод будет:
{ name: 'catOne', color: 'orange' } 0
{ name: 'catTwo', color: 'Grey-white' } 1
{ name: 'catThree', color: 'Grey-white' } 2
Если я изменю if (index >= -1 )
, вывод будет таким же, как ввод 'grey-white'
в качестве текстового значения.
Может кто-нибудь объяснить, почему первый элемент не удаляется, даже если это индекс 0? и почему индекс -1 приводит к удалению индекса 1?
Я попытался найти это, но не смог найти то, что искал. Я только начал изучать ваниль JS. Спасибо за вашу помощь.