【问题标题】:JS : checking the difference between the two arrays in javascriptJS:检查javascript中两个数组之间的差异
【发布时间】:2020-01-19 01:11:37
【问题描述】:

到不同的两个数组与真或假输出。 用函数比较两个数组 这是我的代码:

    var cekDiff = function (arr1, arr2) {
    var maxLength = 0,
        cekTrue = 0;
    if (arr1.length > arr2.length) maxLength = arr1.length;
    else maxLength = arr2.length;
    for (var i = 0; i < maxLength; i++) {
        if (arr1[i] == arr2[i]) {
            cekTrue++;
        }
    }
    if (cekTrue >= maxLength) return true;
    else return false;
}


if (cekDiff([0, 1, 2, 4, 3], [0, 1, 2, 3, 4])) {
    console.log("match");
} else {
    console.log("different");
}

【问题讨论】:

标签: javascript arrays


【解决方案1】:

您非常接近,因为两个数组的值顺序不同,并且您通过索引 (newArr1[i] == newArr2[i]) 进行匹配,因此您需要先对数组进行排序,然后检查是否相等

var cekDiff = function(arr1, arr2) {
  let newArr1 = [...arr1].sort((a, b) => a - b)
  let newArr2 = [...arr2].sort((a, b) => a - b)
  var maxLength = 0,
    cekTrue = 0;
  if (newArr1.length > newArr2.length) maxLength = arr1.length;
  else maxLength = newArr2.length;
  for (var i = 0; i < maxLength; i++) {
    if (newArr1[i] == newArr2[i]) {
      cekTrue++;
    }
  }
  if (cekTrue >= maxLength) return true;
  else return false;
}


if (cekDiff([0, 1, 2, 4, 3], [0, 1, 2, 3, 4])) {
  console.log("match");
} else {
  console.log("different");
}

【讨论】:

    【解决方案2】:

    使用 reduce 来检查你的数组

    const isArrayExact = (arr1, arr2) => arr1.reduce((acc, curr, index) => acc && ,true)
    

    比较每个元素,但检查是否存在

    【讨论】:

    • 这里缺少一些东西:(acc, curr, index) =&gt; acc &amp;&amp;
    【解决方案3】:

    您可以通过递增或递减来计算每个元素。然后获取值,如果全为零,则返回true

    function sameValues(a, b) {
        const
            counter = (o, i) => k => o[k] = (o[k] || 0) + i,
            count = {};
        
        a.forEach(counter(count, 1));
        b.forEach(counter(count, -1));
        
        return !Object.values(count).some(Boolean);
    }
    
    
    console.log(sameValues([0, 1, 2, 4, 3], [0, 1, 2, 3, 4]));
    console.log(sameValues([0, 1, 2, 4, 3], [0, 1, 2, 3, 4, 5]));

    【讨论】:

      猜你喜欢
      • 2014-06-12
      • 2020-01-11
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      相关资源
      最近更新 更多