#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]));