Ale*_*rin 9 javascript arrays each jquery
我有一系列的项目,如:
var items = [id: "animal", type: "cat", cute: "yes"]
Run Code Online (Sandbox Code Playgroud)
我正在尝试删除任何与给定ID相匹配的项目.在这种情况下;animal
我被卡住了!我可以通过使用更简单的数组来轻松地工作但这不是我需要的...我还需要按值删除项目,因为我不希望通过索引引用项目的麻烦.
有没有我可以使用的jQuery方法,我不需要遍历items数组,而是指定一个选择器?
这是我的jsFiddle:http://jsfiddle.net/zafrX/
Ada*_*kis 22
我不确定通过索引引用数组项有多麻烦.删除数组项的标准方法是使用splice方法
for (var i = 0; i < items.length; i++)
if (items[i] === "animal") {
items.splice(i, 1);
break;
}
Run Code Online (Sandbox Code Playgroud)
当然,您可以将其概括为辅助函数,因此您无需在任何地方复制此函数.
编辑
我刚注意到这个错误的语法:
var items = [id: "animal", type: "cat", cute: "yes"]
Run Code Online (Sandbox Code Playgroud)
你想要这样的东西:
var items = [ {id: "animal", type: "cat", cute: "yes"}, {id: "mouse", type: "rodent", cute: "no"}];
Run Code Online (Sandbox Code Playgroud)
这会将删除代码更改为:
for (var i = 0; i < items.length; i++)
if (items[i].id && items[i].id === "animal") {
items.splice(i, 1);
break;
}
Run Code Online (Sandbox Code Playgroud)
不需要jQuery或任何第三方lib,现在我们可以使用新的ES5过滤器:
let myArray = [{ id : 'a1', name : 'Rabbit'}, { id : 'a2', name : 'Cat'}];
myArray = myArray.filter(i => i.id !== 'a1');
Run Code Online (Sandbox Code Playgroud)
您可以splice自己使用或运行删除.这是一个例子:
for (var i = 0; i < items.length; i ++) {
if (items[i] == "animal") {
items.splice(i, 1);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
有一个简单的方法!
myItems.splice(myItems.indexOf(myItems.find(row => row.id == id)), 1);
Run Code Online (Sandbox Code Playgroud)
演示如下:
myItems.splice(myItems.indexOf(myItems.find(row => row.id == id)), 1);
Run Code Online (Sandbox Code Playgroud)