js获数组里的多个属性相同的元素
时间: 2024-09-12 16:04:30 浏览: 30
在JavaScript中,如果你想获取数组里所有具有相同特定属性的元素,可以使用`filter()`函数结合`reduce()`或`findAll()`方法。这里是一个示例:
```javascript
let arr = [
{ name: 'John', age: 25 },
{ name: 'Jane', age: 30 },
{ name: 'John', age: 40 },
{ name: 'Mike', age: 35 }
];
// 使用filter()和reduce()来找到所有name属性相同的元素
const duplicates = arr.filter(obj => obj.name === 'John')
.reduce((acc, curr) => acc.concat(curr), []);
console.log(duplicates); // 输出:[ { name: 'John', age: 25 }, { name: 'John', age: 40 } ]
// 或者使用一个新的findAll()方法(如果不存在的话),这会更直观
const findAllWithAttr = (arr, attr, value) =>
arr.reduce((acc, obj) => (obj[attr] === value ? [...acc, obj] : acc), []);
const result = findAllWithAttr(arr, 'name', 'John');
console.log(result); // 同样输出:[ { name: 'John', age: 25 }, { name: 'John', age: 40 } ]
```
这两个例子都返回了一个新的数组,包含了所有name属性为'John'的对象。