如何按键筛选对象数组?(目标键为0002)
解决数组筛选问题
原代码问题分析
你的代码存在几个关键错误:
filter方法返回的是符合条件的数组元素(整个对象),无法直接得到评论数组- 判断逻辑错误:你需要检查键(
Key)是否等于字符串"0002",而非将数组(Review[Key])与数字0002比较 for循环内直接return会导致回调函数第一次循环就终止,无法遍历到目标键
正确解决方案
方法一:定位目标对象后提取评论数组
这是最直观的实现方式,先找到包含 "0002" 键的对象,再取出对应的值:
// 找到包含目标键的数组元素 const targetItem = AllReviews.find(item => Object.keys(item).includes("0002")); // 取出评论数组,未找到则返回空数组 const reviewsFor0002 = targetItem ? targetItem["0002"] : [];
方法二:用reduce一步提取结果
通过reduce直接遍历数组,拿到目标评论数组:
const reviewsFor0002 = AllReviews.reduce((result, item) => { return item["0002"] || result; }, []);
方法三:用flatMap简化代码
如果数组中存在多个含 "0002" 键的对象,flatMap 会自动合并结果(你的场景下仅返回一组数据):
const reviewsFor0002 = AllReviews.flatMap(item => item["0002"] || []);
最终结果
运行上述代码后,reviewsFor0002 会得到:
[ {"Review": "Mouth-watering", "Notes": "Approved"}, {"Review": "Easy As Pie", "Notes": "Approved"} ]
内容的提问来源于stack exchange,提问作者volume one
相关产品推荐
相关产品推荐

