首页 > 解决方案 > 我需要比较多个数组并注销 JavaScript 中的差异。这是任何可能长度的嵌套数组

问题描述

这就是我所拥有的,目前,我能够有所作为。但正如您将从我正在比较的数组中看到的那样,我想返回 2 个值。也就是说,如果我将 a1 中的第一个数组与 a2 中的第一个数组进行比较,我应该得到差异,同样,如果我将 a1 中的第二个数组与 a2 中的第二个数组进行比较,我应该得到差异 4。现在我只得到一个值。

var findDivergence = function (a1, a2) {

  for (let q = 0; q < a1.length; q++) {
    var result = [];
    for (i = 0; i < a1[q].length; i++) {
      if (a1[q][i] !== a2[q][i]) {
        result.push(i);
        console.log(result.length)
      }
    }
  }
  return `Length is : ${result.length}`;

};

console.log(findDivergence([
    ["a", "b", "c", "d", "e", "f", "g"], 
    ["a", "b", "c", "d", "e", "f", "g"]
  ], 
  [
    ["a", "b", "d", "r", "e", "q", "g"], 
    ["a", "2", "d", "r", "e", "q", "g"]
  ]
));

标签: javascript

解决方案


像这样?

var zip = function(a1, a2) {
  const len = a1.length < a2.length ? a2.length : a1.length;
  const result = [];
  for (let i = 0; i < len; i++) {
    result.push([a1[i], a2[i]]);
  }
  return result;
}

var findDivergence = function (a1, a2) {
  const result = [];
  for (const [aa, bb] of zip(a1, a2)) {
    let divergences = 0;
    for (const [a, b] of zip(aa, bb)) {
      if (a !== b) divergences++;
    }
    result.push(`Length is ${divergences}`);
  }
  return result;
};

console.log(findDivergence([["a", "b", "c", "d", "e", "f", "g"], ["a", "b", "c", "d", "e", "f", "g"]], [["a", "b", "d", "r", "e", "q", "g"], ["a", "2", "d", "r", "e", "q", "g"]]));


推荐阅读