ant*_*njs 45 javascript arrays
我有这样的数组
arr = ["orange","red","black","white"]
Run Code Online (Sandbox Code Playgroud)
我想扩充定义一个deleteElem()方法的数组对象,其行为如下:
arr2 = arr.deleteElem("red"); // ["orange","black","white"] (with no hole)
Run Code Online (Sandbox Code Playgroud)
仅使用value参数(无索引)完成此任务的最佳方法是什么?
Mau*_*res 89
以下是它的完成方式:
var arr = ["orange","red","black","white"];
var index = arr.indexOf("red");
if (index >= 0) {
arr.splice( index, 1 );
}
Run Code Online (Sandbox Code Playgroud)
此代码将删除数组中出现的"红色"1.
Rom*_*ent 24
我知道这个问题已经有了一个可接受的答案,但当我刚接触编码时,我总是发现它splice并不是直截了当的.即使在今天,它仍然感觉不太
但可读性很重要.
所以在这种情况下我宁愿使用过滤方法,如下所示:
arr = ["orange","red","black","white","red"]
arr = arr.filter(val => val !== "red");
console.log(arr) // ["orange","black","white"]
Run Code Online (Sandbox Code Playgroud)
就是这样.
请注意,此方法会删除数组中出现的所有"红色".
现在我觉得这很有趣,你真的可以很容易地阅读发生的事情.在我的情况下更有趣的是,如果你使用对象数组,你可以轻松地走得更远,例如:
arr = arr.filter(obj => obj.prop !== "red");
Run Code Online (Sandbox Code Playgroud)
根据ryannjohnson的评论,这种方法似乎没有任何警告.
| 归档时间: |
|
| 查看次数: |
79605 次 |
| 最近记录: |