Рассмотрим следующие понятия:
// splice:返回从原始数组中删除的项(如果没有任何删除,则返回空数组)
// 当指定2个参数时,表示删除
// 当指定3个参数,且第2个参数为0时表示插入
// 当指定3个参数,且第2个参数为1时表示替换
На этот раз возьмем удаление в качестве примера. Мы хотим удалить указанный элемент в массиве. Нам нужно знать индекс массива, в котором он находится. Мы можем использовать array.indexOf, чтобы получить индекс, где он находится, а затем используйте splice для удаления элемента.
Это нормально само по себе
код показывает, как показано ниже:
var arr = ["张三","李四","王五","赵六"];
// 删除王五
arr.splice(arr.indexOf("王五"),1);
но. . . . . Вот в чем проблема.
Если он помещается в цикл for, например, в цикле массива, когда выполняется определенное условие, нам нужно удалить указанный элемент.
Но в цикле i каждый раз +1, но после того, как мы удаляем элемент, меняется индекс и соответствующая позиция.После того, как значение i увеличивается на единицу, следующий элемент будет пропущен.
Яма. . .
Поэтому при удалении элемента мы вручную уменьшаем значение i на единицу, чтобы избежать проблемы пропуска элемента.
Например: пройтись по массиву, когда значение свойства DasOperation равно неизменному, удалить эти данные из массива, а затем i-1
// 删除没有变化的,不传递到后台
for (let i = 0; i < this.CurrJobData.Content.length; i += 1) {
if (this.CurrJobData.Content[i].DasOperation === '没变') {
this.CurrJobData.Content.splice(this.CurrJobData.Content.indexOf(this.CurrJobData.Content[i]), 1);
i -= 1;// 必须对i减去1,否则后面的一个元素会被跳过去
}
}
Ну а чтобы больше друзья не сталкивались с ямами, выложу, надеюсь поможет.
Если есть проблема, укажите на нее и примите критику.
Личный публичный аккаунт WeChat: