如何为嵌套对象数组的指定元素新增键,值从另一数组顺序分配
实现方案
你只需要在遍历前声明一个专门统计orange类型元素出现顺序的计数器即可,每次命中orange类型元素时用计数器作为索引取值,用完后计数器自增即可。
完整代码
// 初始化orange元素顺序计数器,从0开始对应arrOfProps的第一个元素 let orangeIndex = 0; arrOfItems.forEach(element => { if(element.type === "orange") { // 按当前顺序取对应prop值,修正了你原代码里obj的笔误,应为当前遍历对象element element.attrs["class"] = arrOfProps[orangeIndex]; // 计数器自增,下一个orange取下一个值 orangeIndex++; // 可选兜底逻辑:如果orange数量超过arrOfProps长度想循环取值,替换上面两行即可 // element.attrs["class"] = arrOfProps[orangeIndex % arrOfProps.length]; // orangeIndex++; } })
逻辑说明
- 计数器
orangeIndex只会在命中type="orange"的元素时才会累加,apple类型的元素不会影响计数顺序,完全符合「第一个orange取prop_1、第二个取prop_2」的要求 - 可选的取模兜底写法可以避免props数组长度不够时出现undefined的问题,若业务场景中orange数量不会超过props数组长度可以不用添加
内容的提问来源于stack exchange,提问作者One_for_all
相关产品推荐
相关产品推荐

