查找所有具有匹配ID javascript的对象

Mod*_*esq 1 javascript arrays lodash

我正在尝试从我的学生数组中获取所有具有匹配ID的对象,并从中获取其他属性值...

例如,我的数组如下所示:

const students = [
    {id: 1, name: 'Cal', location: 'McHale' },
    {id: 2, name: 'Courtney', location: 'Sydney Hall' }, 
    {id: 1, name: 'Cal', location: 'Syndey hall' }
]
Run Code Online (Sandbox Code Playgroud)

所以我的预期输出将获取所有id的实例:1。

{id: 1, name: 'Cal', location: 'McHale' },
{id: 1, name: 'Cal', location: 'Syndey hall' }
Run Code Online (Sandbox Code Playgroud)

我最终将要删除重复的名称,并显示在这样的列表中……(但这很重要。现在,我只想获取匹配的对象)。

Id: 1    Name: Cal    Location: McHale
                                Syndey Hall
Run Code Online (Sandbox Code Playgroud)

我试过了:

const result = _.find(students, {student_id: studentId});
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用,它只是返回具有该ID的对象之一。

{id: 1, name: 'Cal', location: 'McHale' },
Run Code Online (Sandbox Code Playgroud)

我该如何进行这项工作?

Gab*_*oli 9

_.find如果您看到它的文档说明

迭代集合的元素,返回第一个元素谓词返回 true。


你应该使用_.filter你想要的方法

迭代集合的元素,返回所有元素的数组谓词返回 true for

就像是

const result = _.filter(students, {student_id: studentId});
Run Code Online (Sandbox Code Playgroud)


Jus*_*age 6

我将调查过滤器功能。它内置在JavaScript中。

这是一个工作原理的例子。您需要做的就是找到一种方法来创建一个函数,该函数将告诉您是否具有正确的ID。

function isBigEnough(value) {
  return value >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]
Run Code Online (Sandbox Code Playgroud)