JavaScript如何获取对象数组中@KAV为1的元素对应的前一项元素
实现方案
你之前的写法只能获取单个索引对应的前一项,没有遍历数组筛选所有符合@KAV="1"的元素,也没有做边界校验,因此无法得到完整的目标结果。
可以通过遍历数组同时匹配条件、收集符合要求的前一项实现需求:
const finalArray = [] // 遍历数组同时获取当前元素索引 kavArray.forEach((currentItem, currentIndex) => { // 两个校验条件:当前元素@KAV为1、当前元素不是数组第一项(避免索引越界) if (currentItem['@KAV'] === '1' && currentIndex > 0) { // 将当前元素的前一项推入结果数组 finalArray.push(kavArray[currentIndex - 1]) } })
如果你偏好链式调用写法,也可以用reduce实现:
const finalArray = kavArray.reduce((result, currentItem, currentIndex) => { if (currentItem['@KAV'] === '1' && currentIndex > 0) { result.push(kavArray[currentIndex - 1]) } return result }, [])
拿你提供的示例数组运行以上代码,最终得到的finalArray会包含索引为2、4、6的三个对象,和你的需求完全匹配。
内容的提问来源于stack exchange,提问作者Chinmayee
相关产品推荐
相关产品推荐

