This question already has answers here:
How to filter object array based on attributes?
                                
                                    (13个回答)
                                
                        
                                3年前关闭。
            
                    
我正在尝试通过其内容过滤对象数组:

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的对象。但是,它给了我未定义的含义。我究竟做错了什么?

最佳答案

在这里分配值:

return e["uid"] = 1;


使用双等于==检查值是否相等:

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"]);

10-05 20:50
查看更多