前端js,怎么删除数组中的其中一个对象?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端js,怎么删除数组中的其中一个对象?相关的知识,希望对你有一定的参考价值。

删掉所有的 cc:"",cd:""

let arr = [

ab: "",
ac: "",
c:[
cc:"1",cd:"2",
cc:"",cd:"",
cc:"",cd:"",
]
,

ab: "",
ac: "",
c:[
cc:"1",cd:"2",
cc:"1",cd:"",
cc:"",cd:"",
]
,
ab: "",
ac: "",
c:[
cc:"1",cd:"2",
cc:"",cd:"",
cc:"",cd:"2",
]
,
]

for (var i = 0; i < arr.length; i++)
for (var g = 0; g < arr[i].c.length; g++)
if (arr[i].c[g].cc == "" && arr[i].c[g].cd == "")
arr[i].c.splice(g,1)



console.log(arr);
怎么不能把所有的 cc:"",cd:"" 都删掉?


for (var g = 0; g < arr[i].c.length; g++)
改成
for (var g = arr[i].c.length-1; g >=0; g--)
就正常了
原因就在于,如果从头开始循环,遇到连续两个需要删除的元素时,删掉第一个,下一个元素就自动顶上来代替已删除的元素位置,然后程序再一次循环时,就会跳过这个元素而去处理下下个元素,这样就会造成删除不全的情况了。
解决的办法就是从后面往前面删,就可以完美避免上面的问题。
参考技术A 写一个循环,清空所有的c

JS中彻底删除json对象组成的数组中的元素

只是分享一个小知识~

在JS中,对于某个由json对象组成的数组,例如:

var test = [{ "a": "1", "b": "2" }, { "a": "3", "b": "4" }, { "a": "5", "b": "6" }];

如果我们想要删除其中的第二个json对象,应该怎么做呢?其实方法和操作数组完全相同。

 

在最开始的时候尝试使用了delete运算符,但在查询数组长度的时候发现其实这种方法并不是彻底删除元素,而是删除它的值,但仍会保留空间。

    var test = [{ "a": "1", "b": "2" }, { "a": "3", "b": "4" }, { "a": "5", "b": "6" }];
    test.length   //输出为 3
    delete test[1];
    test.length   //输出仍为 3

查询运算符delete我们知道它只是将该值置为undefined,而不会影响数组长度,即将其变为稀疏数组(《JS权威指南》7.5节)。

 

了解及此,也许想着可以将删除点之后的元素各往前移动1个单位,实现彻底剔除该元素,但在JS方法中我们可以查到一种更加简便的方式:splice() 方法

    var test = [{ "a": "1", "b": "2" }, { "a": "3", "b": "4" }, { "a": "5", "b": "6" }];
    test.length   //输出为 3
    test.splice(1, 1);
    test.length   //输出为 2

删除后test.length变为2,这正是我们想要的结果。

 

在W3C中我们可以查到有关于splice()的描述:

arrayObject.splice(index, howmany, item1, ....., itemX)  方法向/从数组中添加/删除项目,然后返回被删除的项目。

参数1:index                       为插入添加或(和)删除的起始位置;

参数2:howmany                 指定从数组中添加/删除的元素个数;

参数3:item1, ....., itemX     可选,选择添加操作时填入,表示需要添加的元素。

 

以上是关于前端js,怎么删除数组中的其中一个对象?的主要内容,如果未能解决你的问题,请参考以下文章

删除数组中指定的某个对象

前端JS:判断list(数组)中的json对象是否重复

js遍历对象的几种方法以及 删除对象中的某个元素的方法

怎样删除js数组中的undefined?

前端学习(39)~js学习(十六):数组

Web前端-JS基础