在 JS 中,列举一个由对象组成的数组,例如:
var arrobj = [{ a: 1, b: 2 }, { c: 3, d: 4 },
{ name: 'linzhu', age:22}];
如果我们想要删除其中的第二个对象,应该怎么做呢?其实方法和操作数组完全相同。
在最开始的时候我尝试使用了 delete 运算符,但在查询数组长度的时候发现其实这种方法并不是彻底删除元素,而是删除它的值,但仍会保留空间。
var arrobj = [{ a: 1, b: 2 }, { c: 3, d: 4 },
{ name: 'linzhu', age: 22 }];
console.log(arrobj.length) //输出为 3
delete arrobj[1];
console.log(arrobj.length)
//输出仍为 3
查询运算符 delete时知道它只是将该值置为 undefined,而不会影响数组长度,即将其变为稀疏数组
console.log(arrobj)
了解及此,也许想着可以将删除点之后的元素各往前移动1个单位,实现彻底剔除该元素,但在JS方法中我们可以查到一种更加简便的方式:splice();
splice
是截取数组中的某些内容,按照数组的索引来截取
语法:splice(从哪一个索引位置开始,截取多少个,替换的新元素)
(第三个参数可以不写,用第三个参数把截取完空出来的位置填充)
var arrobj = [{ a: 1, b: 2 }, { c: 3, d: 4 }, { name: 'linzhu', age: 22 }];
console.log(arrobj.length) //输出为 3
arrobj.splice(1,1)
console.log(arrobj.length)//输出为 2
console.log(arrobj)
//[ { c: 3, d: 4 }, { name: 'linzhu', age: 22 }]
删除后 arrobj.length 变为 2,这正是我们想要的结果。