如何检查javascript中两个数组是否有区别?

时间:2019-01-24 06:35:25

标签: javascript

在StackOverflow here上有一个类似的问题,我们需要获取数组中的差异。

但是我只想对或错。我不需要其他数组。

我这样尝试过:

groups = [{id: 1, name: "check 1"}, {id: 2, name: "check 2"}]

checkedgroups = [{id: 1, name: "check 1"}, {id: 2, name: "check 2"}, {id: 3, name: "check 3"}]

我的解决方案: _.differenceBy(groups, checkedGroups, 'id').length

6 个答案:

答案 0 :(得分:1)

您可以尝试其他阵列并检查输出。它使用过滤器功能。如果元素不相等,则filter返回的数组为空。否则,将返回原始数组的长度的数组。

var a = ['a', 'b'];
var b = ['a', 'b'];

function w(a, b) {
  if (a.length != b.length)
    return false;
  else {
    var k = a.filter((e) => b[a.indexOf(e)] == e)
    if (k.length == 0)
      return false;
    else if (k.length == a.length)
      return true
  }
}
console.log(w(a, b))

答案 1 :(得分:0)

您可以获得ID的数组以比较数组的字符串版本:

var groups = [{id: 1, name: "check 1"}, {id: 2, name: "check 2"}]

var checkedgroups = [{id: 1, name: "check 1"}, {id: 2, name: "check 2"}, {id: 3, name: "check 3"}]

function differenceBy(g, c, id){
  var id1 = JSON.stringify(g.map(i => i[id]));
  var id2 = JSON.stringify(c.map(i => i[id]));
  if(id1 == id2) return true;
  else return false;
}


console.log(differenceBy(groups, checkedgroups, 'id'))

答案 2 :(得分:0)

您可以按以下方式使用isEqualWith

onclick

答案 3 :(得分:0)

如果只是JSON字符串

try{
    return JSON.stringify(groups) === JSON.stringify(checkedgroups);
} catch(e) {
    return false
}

答案 4 :(得分:0)

如果要获取从一个数组到另一个数组的项目数不同,可以将两个对象都映射到id的数组(或将prop参数设置为的数组) 。然后,您可以使用.filter来获得arr1 - arr2的差额。最后,您可以返回两个数组之差的.length

请参见下面的工作示例:

const groups = [{id: 1, name: "check 1"}, {id: 2, name: "check 2"}],
checkedgroups = [{id: 1, name: "check 1"}, {id: 2, name: "check 2"}, {id: 3, name: "check 3"}];

const differenceBy = (arr1, arr2, prop) => {
  const arrProp1 = arr1.map((obj) => obj[prop]),
  arrProp2 = arr2.map((obj) => obj[prop]),
  
  dif = arrProp1.filter(num => !arrProp2.includes(num));
  return dif.length;
}

console.log(differenceBy(checkedgroups, groups, "id"));

答案 5 :(得分:0)

要相互比较任何对象(没有循环引用),请使用以下这些:

如果您确定它们是否不是null和undefined:
if (myInt.GetType() == typeof(int))

否则:
JSON.stringify(groups) === JSON.stringify(checkedgroups)