可以使用JavaScript中的reduce函数和对象来解决此问题。reduce函数接收两个参数:一个回调函数和一个可选的初始值。回调函数接收两个参数:累计值和当前值。我们可以利用这个回调函数来筛选出特定索引处值相同的对象,并将它们存入一个对象的属性值中,这个属性值是一个数组,里面包含了所有满足条件的对象。
下面是示例代码:
const data = [
{ name: "Tom", age: 22, gender: "male" },
{ name: "John", age: 25, gender: "male" },
{ name: "Sarah", age: 30, gender: "female" },
{ name: "Peter", age: 22, gender: "male" },
{ name: "Lily", age: 30, gender: "female" }
];
const result = data.reduce((acc, curr) => {
if (!acc[curr.age]) {
acc[curr.age] = []; // 如果不存在该年龄,新建一个数组
}
acc[curr.age].push(curr); // 把该对象添加到对应年龄数组末尾
return acc;
}, {});
console.log(result);
运行结果:
{
"22": [
{ "name": "Tom", "age": 22, "gender": "male" },
{ "name": "Peter", "age": 22, "gender": "male" }
],
"25": [
{ "name": "John", "age": 25, "gender": "male" }
],
"30": [
{ "name": "Sarah", "age": 30, "gender": "female" },
{ "name": "Lily", "age": 30, "gender": "female" }
]
}