我有一个数组
var arr = [{"id":"1","name":"One"},{"id":"2","name":"Two"}]
我推送到数组
arr.push(X)
但是如何删除例如 {" id":" 1"," name":" One"} 来自此阵列的名称?
答案 0 :(得分:5)
在普通的javascript中,您必须搜索数组,在每个对象中查找名称匹配,然后删除该对象:
function removeFromArrayByName(arr, name) {
for (var i = 0; i < arr.length; i++) {
if (arr[i].name === name) {
arr.splice(i, 1);
return;
}
}
}
或者,如果可能有多个匹配,并且您想删除所有匹配项,则可以执行此操作(执行向后遍历并在找到匹配项时不返回):
function removeFromArrayByName(arr, name) {
for (var i = arr.length - 1; i >= 0; i--) {
if (arr[i].name === name) {
arr.splice(i, 1);
}
}
}
或者,您甚至可以在传递属性名称以进行搜索时使其更通用:
function removeFromArrayByName(arr, prop, val) {
for (var i = arr.length - 1; i >= 0; i--) {
if (arr[i][prop] === val) {
arr.splice(i, 1);
}
}
}
答案 1 :(得分:0)
问题是普通的js,但是如果你使用jquery,你可以写一个这样的函数:
function removeByName(arr, key){
return $.grep(arr, function (n,i) {
return n.name != key;
});
}
在您的情况下,我会致电removeByName(arr,'One');