[英]How to remove element from an array which as nested objects
这是我的阵列,
arr = [
{
'User': {
'id':1058,
'name':'user67'
},
Source: {
'dom':'pl-4'
}
},
{
'User': {
'id':768,
'name':'user13'
},
Source: {
'dom':'pl-4'
}
}
];
我正在使用以下代码删除:
arr= _.without(arr, _.findWhere(arr, {id: 768}));
我想删除ID为768的用户,但它不知何故不起作用。
如何搜索嵌套对象?
使用ES5数组方法,
arr = arr.filter(function(item) {
return item.User.id !== 768;
});
请注意它简短明了,但传统的for循环更快。
您仍然可以在纯JavaScript中执行此操作:
for (var i = 0; i < arr.length; i++)
{
if (arr[i].User.id == 768)
{
arr.splice(i, 1);
break;
}
}
小提琴 。
Javascript有一个很好的Array方法叫做map
,可以映射对象数组的属性。 因此,您可以通过此方法将数组的对象拼接在包含特定属性的选定索引上:
arr.splice(
arr.map(function(e) {
return e["User"]["id"];
}).indexOf(768)
,1
);
请注意,它的IE兼容性从版本9开始。
您可以尝试以下方法
arr= _.reject(arr, function(obj) {
return obj.User.id == 768;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.