如何比较两个数组对象中的差异项?

15 min read

下面是一个比较两个数组对象差异项的方法,具体实现逻辑是:首先判断两个数组长度是否一致,如果不一致,直接返回两数组之间全部为差异项。如果长度一致,则逐一比较两个数组元素,如果有不同的元素,则记录差异项,并返回记录的差异项数组。

function compareArrays(array1, array2) {
  if (array1.length !== array2.length) {
    return [...array1, ...array2];
  }
  
  const diffItems = [];
  
  for (let i = 0; i < array1.length; i++) {
    if (array1[i] !== array2[i]) {
      diffItems.push(array1[i]);
      diffItems.push(array2[i]);
    }
  }
  
  return diffItems;
}

使用方式如下:

const array1 = ['apple', 'banana', 'orange'];
const array2 = ['apple', 'car', 'orange'];

console.log(compareArrays(array1, array2)); // ['banana', 'car']