如何实现函数遍历两组数组对应元素生成等长差异结果数组?
解决数组对应元素差异比较的问题
你的问题核心是没有遍历数组的对应元素,而是直接把整个数组传给了差异函数,导致函数仅执行一次,输出的是数组转字符串后的拼接差异,而非307组对应字符串的差异结果。
修改后的代码
let lag = {{query29.data.lag }} let real = {{query29.data.produkte}} function getDifference(a, b) { var i = 0; var j = 0; var result = ""; while (j < b.length) { if (a[i] != b[j] || i == a.length) result += b[j]; else i++; j++; } return result; } // 遍历数组,对每一组对应索引的字符串调用差异函数 var test = lag.map((item, index) => getDifference(item, real[index])); return {lag, real, test}
关键修改说明
替换原有的
var test = [getDifference(lag, real)]:- 原代码把整个
lag和real数组作为参数传入getDifference,函数会将数组自动转为逗号拼接的字符串进行比较,最终只生成一个长字符串结果。 - 改用
Array.map方法,遍历lag的每个元素,同时通过index获取real中对应位置的元素,每次调用getDifference处理一对字符串,最终得到包含307个元素的数组。
- 原代码把整个
可选的健壮性优化(如果数组长度可能不一致):
若lag和real的长度存在差异,可先取两者的最小长度避免索引越界:var test = []; const validLength = Math.min(lag.length, real.length); for (let index = 0; index < validLength; index++) { test.push(getDifference(lag[index], real[index])); }
内容的提问来源于stack exchange,提问作者leonleprofessionnel
相关产品推荐
相关产品推荐

