Javascript从属性值匹配的对象数组返回数组

时间:2019-03-22 16:49:02

标签: javascript arrays

是否有内置的Javascript函数或库可以执行以下操作:

const data = [
    { name: 'name1', type: 'type1' },
    { name: 'name2', type: 'type2' },
    { name: 'name3', type: 'type3' },
    { name: 'name4', type: 'type2' },
];

要搜索以下内容并返回所有type = 'type2'

处的对象

类似于data.findIndex((i) => i.type === 'type2'),但返回所有匹配项而不是第一个索引吗?

谢谢

2 个答案:

答案 0 :(得分:9)

您正在寻找Array.filter()

  

filter()方法创建一个具有所有通过元素的新数组   通过提供的功能实现的测试。

示例:

const data = [
    { name: 'name1', type: 'type1' },
    { name: 'name2', type: 'type2' },
    { name: 'name3', type: 'type3' },
    { name: 'name4', type: 'type2' },
]

const result = data.filter(o => o.type === 'type2')

console.log(result)

答案 1 :(得分:1)

您可以使用filter()

const data = [
    { name: 'name1', type: 'type1' },
    { name: 'name2', type: 'type2' },
    { name: 'name3', type: 'type3' },
    { name: 'name4', type: 'type2' },
];
let res = data.filter(({type}) => type === "type2");
console.log(res)