Как объединить и распределить первый массив поверх второго в JavaScript?

Каким будет элегантный способ достижения результата, показанного во фрагменте ниже.

Я объединяю два массива в новый массив, распределяя каждый элемент первого массива по второму массиву.

arr1 = ['XYZ', 'ABC']
arr2 = ['EUR', 'USD']
result = ['XYZ/EUR', 'XYZ/USD', 'ABC/EUR', 'ABC/USD']

let symbolList = [];
SYMBOLS = ['XYZ', 'ABC']
PAIRS = ['EUR', 'USD']
SYMBOLS.map(s => symbolList.push(PAIRS.map(p => s + '/' + p)));
let processSymbols = symbolList.flat();
console.log(processSymbols)

Всего 3 ответа


Давайте просто продолжим и будем использовать flatMap :)

const arr1 = ['XYZ', 'ABC']
const arr2 = ['EUR', 'USD']

const result = arr1.flatMap(val => arr2.map(e => `${val}/${e}`))

console.log(result)


Мне нравится использовать reduce() :

const arr1 = ['XYZ', 'ABC'];
const arr2 = ['EUR', 'USD'];

const result = arr1.reduce((a, c) => {
  arr2.forEach(e => a.push(`${c}/${e}`));  
  return a;
}, []);

console.log(result);

Надеюсь, это поможет!


Вы можете уменьшить массив массивов и отобразить части.

Этот подход работает для более чем двух массивов.

var array1 = ['XYZ', 'ABC'],
    array2 = ['EUR', 'USD'],
    result = [array1, array2].reduce((a, b) => a.flatMap(v => b.map(w => `${v}/${w}`)));

console.log(result);


Есть идеи?

10000