按对象内容过滤对象数组

时间:2016-04-17 16:22:40

标签: javascript jquery arrays

我试图通过其内容过滤对象数组,即:

https://jsfiddle.net/z7g3unyu/2/

var arr =[
    {
    "uid": "1",
    "name": "John Doe"
  },
  {
    "uid": "2",
    "name": "Kate Roe"
  }
];

var newArr = arr.filter(function(e) {
    return e["uid"] == 1;
});

alert(newArr["name"]);

我想创建一个只包含一个uid等于1的对象的新数组。但是,它给了我undefined。我做错了什么?

2 个答案:

答案 0 :(得分:3)

在此处指定值:

return e["uid"] = 1;

使用double equals ==检查相等的值:

return e["uid"] == 1;

请注意,filter()会返回数组,而非对象。使用括号表示法[0]从数组中获取第一个元素。

请参阅下面的工作代码段

var arr = [{
    "uid": "1",
    "name": "John Doe"
}, {
    "uid": "2",
    "name": "Kate Roe"
}];

var newArr = arr.filter(function(e) {
    return e["uid"] == 1;
});

alert(newArr[0]["name"]);

答案 1 :(得分:1)

使用Lodash

_.filter(array, { uid: 1 });