在数组中搜索仅返回第一个结果

时间:2018-10-02 13:10:43

标签: javascript arrays

我正在尝试在数组中搜索并根据其类别查找特定的对象。

但是当我运行代码时,我只会得到一个结果。但是在下面的示例中,我应该有两个结果,因为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);

有人可以请教这个问题吗?

5 个答案:

答案 0 :(得分:6)

Array.prototype.find()返回找到的第一个元素。您正在寻找Array.prototype.filter()

答案 1 :(得分:5)

Array.prototype.find()

  

find()方法返回满足提供的测试功能的数组中第一个元素的值。否则返回undefined。

Array.prototype.filter()

  

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条结果的原因。