Я использую lodash и его функцию объединения. Но когда я использую оператор распространения в union, я больше не получаю нормального ожидаемого результата. Что я делаю не так и почему lodash не работает с оператором спреда? Спасибо!
x = [1, 2, 3, 4]
y = [3, 5]
normalResult = _.union(x, y)
unexpectedResult = _.union(...x, y)
// normalResult = [1, 2, 3, 4, 5]
// unexpectedResult = [3, 5]
Их док говорит: ..Создает массив уникальных значений по порядку из всех заданных массивов, используя SameValueZero для сравнения на равенство ......x
в основном превращает массив в значения, разделенные запятыми ..
Спасибо, это помогло мне
_.union
ожидает, что каждый аргумент будет массивом. Когда вы используете ...x
, вы распределяете массив на отдельные аргументы, чего он не хочет.
Оператор распространения был бы полезен, если бы у вас был двухмерный массив, и вы хотели бы объединить каждый из содержащихся массивов с _.union
, например.
x = [1, 2, 3, 4]
y = [3, 5]
a = [x, y];
result = _.union(...a);
Но спред выполняет функцию
union
следующим образом:_.union(1, 2, 3, 4, [3, 5])
. Вы знали об этом?