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

时间:2014-09-10 18:57:02

标签: javascript jquery underscore.js

这是我的数组,

 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的用户,但它不知何故不起作用。

如何搜索嵌套对象?

4 个答案:

答案 0 :(得分:4)

使用ES5数组方法,

arr = arr.filter(function(item) {
    return item.User.id !== 768;
});

请注意它简短明了,但传统的for循环更快。

答案 1 :(得分:2)

您仍然可以使用纯JavaScript:

for (var i = 0; i < arr.length; i++)
{
    if (arr[i].User.id == 768)
    {
        arr.splice(i, 1);
        break;
    }
}

Fiddle

答案 2 :(得分:1)

Javascript有一个很好的Array方法叫map,可以映射对象数组的属性。因此,您可以通过此方法在包含特定属性的选定索引上拼接数组的对象:

arr.splice(
    arr.map(function(e) {
        return e["User"]["id"];
    }).indexOf(768)
    ,1
);

MDN Array.prototype.map() docs

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

答案 3 :(得分:0)

您可以尝试以下

$ echo $(( 98 & 7 ))
2