【tip】splice:删除js数组中指定的数组项


根据项目,需要对后端传递的数组进行处理,将其内不需要的的数组项刨除。最初很自然想到了delete操作符,它功能强大,直接针对对象,删除的无影踪,但后来发现它的功力在数组中体现不出来了。

先看一个例子,下面是一个数组: ["user_2", 4, "org_8", "user_5", "org_12", 6, "org_37"],我们想除掉其中的数字,如果我们使用delete,最初的写法是:

[c]

var arr = ["user_2", 4, "org_8", "user_5", "org_12", 6, "org_37"];
for(var i = 0; i < arr.length; i++){
if(!isNaN(arr[i])){
delete arr[i]
}
}
alert(arr);
alert(arr.length);

&nbsp;

[/c]

运行后发现,arr中的内容变成了 ["user_2", , "org_8", "user_5", "org_12",  , "org_37"], 数组长度依然是7!

这显然没有达到我们想要的效果。

主人公出场了,这就是splice方法,它可以轻松地实现数组的剔除功能,并能保证数组的长度实时变化。

[c]
<script type="text/javascript">
var arr = ["user_2", 4, "org_8", "user_5", "org_12", 6, "org_37"];
for(var i = 0; i < arr.length; i++){
if(!isNaN(arr[i])){
arr.splice(i, 1)
i–;
}
}
alert(arr);
alert(arr.length);

[/c]

这回arr的内容是 ["user_2", "org_8", "user_5", "org_12", "org_37"],数组的长度变成了5。

这下达到了我们想要的效果。

其实js为处理数组提供了很多这样的方法,抛砖引玉(其实出于懒惰),下面是一些热心的网友提供的这方面的资料:
 JavaScript splice 方法:插入、删除或替换数组的元素

 

js数组操作大全

 

 


分享到:

1 条评论

昵称