使用$ .grep过滤数组对象失败

时间:2015-08-02 11:24:26

标签: javascript jquery

[{"id":1,"name":"John"},{"id":2,"name":"James"},{"id":3,"name":"Alex"}]

$.grep(Arr.nameList, function(e){ 
    return e.id != 1; 
});

console.log(Arr.nameList);

我希望得到2个数组返回约翰丢弃,但我仍然把它们全部收回,我上面的$.grep出了什么问题?

2 个答案:

答案 0 :(得分:1)

  

jQuery.grep说明:查找满足过滤函数的数组元素。原始数组不受影响。

  1. 首先,您必须将返回的数组存储在变量中。
  2. 删除.nameList您不必添加任何内容Arr
  3. 替换:

    $.grep(Arr.nameList , function(e){ 
        return e.id != 1; 
    });
    

    通过:

    var result = $.grep(Arr , function(e){ 
        return e.id != 1; 
    });
    

    你可以找到grep:

    的结果
    console.log(result);
    

    查看 Working fiddle

答案 1 :(得分:0)

$.grep()返回一个新的过滤数组,不会影响原始数组。

尝试:

var filteredArray = $.grep(Arr.nameList, function(e){ 
    return e.id != 1; 
});    
console.log(filteredArray);

您正在做的是创建一个新的过滤数组,但忽略它并检查原始未受影响的数组

参考:$.grep() docs

DEMO