我有一个场景,我希望在数组数组中找到一个项目,然后如果包含删除该项目。
a = [ [ 'Brian', 80 ],
[ 'Sue', 72 ],
[ 'Mary', 18 ],
[ 'Harry', 60 ],
[ 'Brian', 40 ] ];
我最初想过使用indexOf查找项目然后拼接删除它但是不能使用indexOf,因为我只知道元素[0]的值而不是元素[1],例如我知道"哈利"但不是他的年龄:
index = a.indexOf(["Harry", ?])
a.splice(index, 1);
另一种情况我可以更新值并在不存在的情况下创建它。
修改 新的aync编程然而只是意识到在异步环境中,数组元素可能会在处理数组时被更改,因此当我稍后删除项目一个或两个命令时,索引项目编号X可能不再是x ...
答案 0 :(得分:0)
取决于您是否要返回新阵列或修改原始阵列。
如果您想要返回没有匹配元素的新,可以使用Array.prototype.filter
:
// Reverse order because the array is re-indexed on splice
for (var i = a.length - 1; i >= 0; i--)
if (a[i] === 'Harry') a.splice(i, 1);
要添加新元素并返回新数组,您还可以使用Array.prototype.concat
。
但是,如果您要删除/插入/替换原始数组中的元素,正确的方法是使用Array.prototype.splice
或更快的Array.prototype.push
添加新项目到最后:
"UuoaI" = magicOperation("Üüöäİ");
顺便说一句,请考虑使用lodash
或underscorejs
等帮助程序库以安全的方式操作数组。
答案 1 :(得分:-2)
您可以从列表中剪切项目
a.forEach(function(x){
if((x.indexOf("Brian")) === 0) a.splice([a.indexOf(x)],1)
});