JavaScript遍历JSON相似键名实现strOption与strPrice配对的问题
实现逻辑
- 遍历
cars.car数组下的所有车辆对象 - 对每个车辆对象,循环遍历序号1~10,依次取出对应
strOption[i]和strPrice[i]的值 - 仅当两个值都不为空时,才将二者分别推入
strOptions和strPrices数组,保证二者索引始终配对 - 删除所有原始的
strOption[i]和strPrice[i]冗余字段,将新生成的两个数组挂载到车辆对象上
完整实现代码
// 入参为你从API获取的原始cars数据 function formatCarData(rawCars) { rawCars.car.forEach(car => { const options = []; const prices = []; // 按题目要求最多遍历到序号10 for (let i = 1; i <= 10; i++) { const opt = car[`strOption${i}`]?.trim() || ''; const price = car[`strPrice${i}`]?.trim() || ''; // 仅两个值都非空时加入数组,保证配对 if (opt && price) { options.push(opt); prices.push(price); } // 清除冗余字段 delete car[`strOption${i}`]; delete car[`strPrice${i}`]; } // 挂载处理后的数组 car.strOptions = options; car.strPrices = prices; }); return rawCars; } // 调用示例 const processedCars = formatCarData(你的原始API返回的cars数据); console.log(processedCars); // 输出符合你要求的格式
注意点
- 代码中加了
trim()处理,会自动过滤掉值为全空格的无效内容 - 严格保证同序号的option和price同时存在才加入数组,不会出现两个数组长度不一致的问题
内容的提问来源于stack exchange,提问作者Rob Gibson
相关产品推荐
相关产品推荐

