JavaScript对比3个数组匹配主数组获取正确组合的实现问题
问题原因
- 字段映射错误:A数组存储功耗值,对应
result的x_powerConsumption字段,你的代码中错误匹配了x_size字段;B数组存储尺寸值,对应result的x_size字段,你的代码中错误匹配了x_powerConsumption字段。 - 匹配逻辑错误:你用
some遍历整个result数组做匹配,会筛选出A、B中所有在result里出现过的项,直接取索引0的话拿到的是A、B数组本身的第一个匹配项,不是同一条result记录对应的关联值,因此出现跨记录的错误组合。
修复代码
如果你需要的是result第一条记录对应的组合,直接指定匹配该条记录的对应字段即可:
// 取目标result记录,这里取第一条符合你预期输出的组合 const targetItem = result[0]; // 修正字段映射关系 let newArray = A.filter(o1 => o1.label === targetItem.x_powerConsumption); let newArray2 = B.filter(o1 => o1.label === targetItem.x_size); this.setState({ selectedVarientOne: newArray[0].label, selectedVarientTwo: newArray2[0].label })
如果不需要从A、B数组中捞取完整对象,直接从result取值效率更高:
const targetItem = result[0]; this.setState({ selectedVarientOne: targetItem.x_powerConsumption, selectedVarientTwo: targetItem.x_size })
内容的提问来源于stack exchange,提问作者Harshal Kalavadiya
相关产品推荐
相关产品推荐

