按值删除数组元素的最佳方法
我有一个这样的数组
arr = ["orange","red","black","white"]
我想增加定义一个deleteElem()
方法的数组对象,它的行为如下所示:
arr2 = arr.deleteElem("red"); // ["orange","black","white"] (with no hole)
使用value参数(无索引)完成此任务的最佳方法是什么?
这是如何完成的:
var arr = ["orange","red","black","white"];
var index = arr.indexOf("red");
if (index >= 0) {
arr.splice( index, 1 );
}
此代码将删除阵列中的1次“红色”。
我知道这个问题已经有了一个可以接受的答案,但是当我刚刚接触编码时,我总是发现splice
不是直截了当的。 即使在今天,它的可读性也较差
但可读性很重要。
所以在这种情况下,我宁愿使用如下的过滤方法:
arr = ["orange","red","black","white","red"]
arr = arr.filter(val => val !== "red");
console.log(arr) // ["orange","black","white"]
就是这样。
请注意,此方法会删除阵列中出现的所有“红色”。
现在我发现真正有趣的是,你实际上可以很容易地阅读发生了什么。 就我而言,更有趣的是,如果您使用数组对象,则可以轻松地进一步,例如:
arr = arr.filter(obj => obj.prop !== "red");
根据ryannjohnson的评论,这种方法似乎没有任何警告。
这里有一个下划线方法,http://underscorejs.org/#without
arr = ["orange","red","black","white"];
arr = _.without(arr, "red");
链接地址: http://www.djcxy.com/p/19039.html
上一篇: The best way to remove array element by value
下一篇: Move an array element from one array position to another