splice的替换删除修改

参数

*start​

指定修改的开始位置(从 0 计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从 -1 计数,这意味着 -n 是倒数第 n 个元素并且等价于 array.length-n);如果负数的绝对值大于数组的长度,则表示开始位置为第 0 位。

[deleteCount] 可选

整数,表示要移除的数组元素的个数。如果 deleteCount 大于 start 之后的元素的总数,则从 start 后面的元素都将被删除(含第 start 位)。如果 deleteCount 被省略了,或者它的值大于等于array.length - start(也就是说,如果它大于或者等于start之后的所有元素的数量),那么start之后数组的所有元素都会被删除。如果 deleteCount 是 0 或者负数,则不移除元素。这种情况下,至少应添加一个新元素。

[item1, item2], … 可选

要添加进数组的元素,从start 位置开始。如果不指定,则 splice() 将只删除数组元素。

返回值

由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。

描述

如果添加进数组的元素个数不等于被删除的元素个数,数组的长度会发生相应的改变。

const list = reactive([
  { id: 1, name: '张三' },
  { id: 2, name: '李四' },
  { id: 3, name: '王五' },
  { id: 4, name: '凌晨' },
  { id: 2, name: 'id222' }
]);
const fn = (t: number) => {
  const row = { id: 2, name: '修改' };
  for (let idx = 0; idx < list.length; idx++) {
    const el = list[idx];
    if (t === 1) {
      //替换
      if (row.id === el.id) {
        list.splice(idx, 1, row);
        break;
      }
    } else if (t === 2) {
      //删除
      if (row.id === el.id) {
        list.splice(idx, 1);
        // break; 如果没有break,将会找出所有符合的id,否则只会删除找到的第一个
      }
    } else {
      //插入
      if (row.id === el.id) {
        list.splice(idx+1, 0, row);
        break;
      }
    }
  }
  console.log(list);
};

你可能感兴趣的:(javascript,vue.js,前端)