Как сравнить два массива и добавить недостающие элементы из большего в меньший в typescript?

#typescript

#typescript

Вопрос:

Допустим, у меня есть два массива:

array1 = [1, 2, 3, 4, 5] массив2 = [1, 2, 3]

Как я могу сравнить их и добавить 4 5 в array2?

Большое спасибо

Ответ №1:

Я создал очень фиктивный пример, который делает то, что вы просите.

Я уверен, что вы можете создать лучшее решение с точки зрения производительности, но этот код справится с этой задачей:

 let array1 = [1, 2, 3, 4, 5];
let array2 = [1, 2, 3];

function compareArraysAndAddMissingItems(a, b) {
  if (a?.length > b?.length) {
    b = [...b, ...a.filter(x => !b.some(y => y === x))];
  } else {
    a = [...a, ...b.filter(x => !a.some(y => y === x))];
  }

  return [a, b];
}

const newArrays = compareArraysAndAddMissingItems(array1, array2);
console.log(newArrays[0], newArrays[1]);  

Ответ №2:

Предполагая, что вам всегда нужно заполнять второй массив из первого, вы могли бы сделать что-то вроде этого:

 const fillTheSecond = <T>(a1 : readonly T[], a2: readonly T[]) : readonly T[] => {
    const seen = new Set<T>(a2);
    return a2.concat(a1.filter(item => !seen.has(item)));
}

console.log(fillTheSecond([1, 2, 3, 4, 5], [1, 2, 3]));