繁体   English   中英

如何从作为嵌套对象的数组中删除元素

[英]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
);

MDN Array.prototype.map()文档

请注意,它的IE兼容性从版本9开始。

您可以尝试以下方法

arr= _.reject(arr, function(obj) {
   return obj.User.id == 768;
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM