我正在尝试在数组中搜索并根据其类别查找特定的对象。
但是当我运行代码时,我只会得到一个结果。但是在下面的示例中,我应该有两个结果,因为cat 2
存在于两个对象中!
这就是我所拥有的:
var storedArray = [{
"title": "test title 1",
"date_added": "2018-09-26",
"url": "someurl.com",
"filename": "file 1",
"category": "cat 1"
}, {
"title": "test title 2",
"date_added": "2018-10-25",
"url": "someurl.com",
"filename": "file 2",
"category": "cat 2"
},{
"title": "test title 3",
"date_added": "2018-10-25",
"url": "someurl.com",
"filename": "file 3",
"category": "cat 2"
}];
var result = storedArray.find( audio => audio.category === 'cat 2' );
console.log(result);
有人可以请教这个问题吗?
答案 0 :(得分:6)
Array.prototype.find()返回找到的第一个元素。您正在寻找Array.prototype.filter()
答案 1 :(得分:5)
find()
方法返回满足提供的测试功能的数组中第一个元素的值。否则返回undefined。
filter()
方法将创建一个新数组,其中包含所有通过提供的功能实现的测试的元素。
从以上所述,您必须使用filter()
才能获得预期的结果:
var storedArray = [{
"title": "test title 1",
"date_added": "2018-09-26",
"url": "someurl.com",
"filename": "file 1",
"category": "cat 1"
}, {
"title": "test title 2",
"date_added": "2018-10-25",
"url": "someurl.com",
"filename": "file 2",
"category": "cat 2"
},{
"title": "test title 3",
"date_added": "2018-10-25",
"url": "someurl.com",
"filename": "file 3",
"category": "cat 2"
}];
var result = storedArray.filter( audio => audio.category === 'cat 2' );
console.log(result);
答案 2 :(得分:2)
您要使用filter功能。
答案 3 :(得分:0)
从MDN文档中查找...
find()方法返回满足提供的测试功能的数组中第一个元素的值。否则返回undefined。
关键字:第一。
答案 4 :(得分:0)
您使用的.find()
方法仅返回符合条件的第一条记录,这就是为什么只获得1条结果的原因。