假设我有这个对象数组,我想按 store_id 的计数进行过滤。
[{
ingredient_id: "lim1",
status: true,
store_id: "1"
},
{
ingredient_id: "lem1",
status: true,
store_id: "1"
},
{
ingredient_id: "lem1",
status: true,
store_id: "5"
}]
如果 x 的值为 2,我想要的输出是:
[{
ingredient_id: "lim1",
status: true,
store_id: "1"
},
{
ingredient_id: "lem1",
status: true,
store_id: "1"
}]
因为 store_id:'1' 出现了两次
但是,如果 x 的值为 3,我希望它返回空。
我在所有寻找答案的地方都只向我展示了如何删除重复项,而不是仅仅返回它们并尝试相反的方法对我没有帮助。
答案 0 :(得分:3)
您可以通过生成一个包含每个 store_id
值的计数的对象来解决这个问题,然后根据每个条目 store_id
的计数是否与 x
匹配来过滤您的输入数组价值:
const data = [{
ingredient_id: "lim1",
status: true,
store_id: "1"
},
{
ingredient_id: "lem1",
status: true,
store_id: "1"
},
{
ingredient_id: "lem1",
status: true,
store_id: "5"
}
];
const counts = data.reduce((c, v) => {
c[v.store_id] = (c[v.store_id] || 0) + 1;
return c;
}, {});
const x = 2;
const result = data.filter(v => counts[v.store_id] == x);
console.log(result);