JS: Сопоставьте массив... Так просто, но BrainBreaker [закрыто]

avatar
Kevin
8 августа 2021 в 18:58
43
1
0

Я столкнулся с проблемой такой простой трансформации js!

Вот мой массив

["one", "two"]

Вот что я хочу вывести

["en/one", "en/one", "fr/two", "fr/two"]

Что я пытаюсь сделать со своими знаниями

let a = ["one", "two"];
let b = a.map(x => `en/${x}`,`fr/${x}`);

console.log(b);

Но я получаю сообщение об ошибке:

ReferenceError: x не определен

Как мне заставить это работать?

Источник
jonrsharpe
8 августа 2021 в 19:06
0

Почему это работает? Ваш пример содержит en и fr, а не 1 и 2.

charlietfl
8 августа 2021 в 19:07
0

откуда берутся значения "en" и "fr"?

Kevin
8 августа 2021 в 19:08
0

Да, извините, это была опечатка

Kevin
8 августа 2021 в 19:09
0

"fr" и "en" взялись из ниоткуда, мне просто нужно добавить весь мой локализованный путь

balderman
8 августа 2021 в 19:09
0

@ Кевин, не могли бы вы обновить вопрос? Не ясно.

Zubair Saif
8 августа 2021 в 19:10
0

если значение языка больше 2, и вы всегда добавляете вручную, так что способ - создать массив объектов, где хранятся два значения, например, obj=[{val:'fr',num:'one'},{val:'two' ,num:'two'}] что-то в этом роде

Ответы (1)

avatar
trincot
8 августа 2021 в 19:09
3

Как вы написали, `fr/${x}` становится вторым аргументом для .map() (где x не входит в область действия). Вам нужно объединить два значения в массив...

И тогда вы можете использовать flatMap:

let b = a.flatMap(x => [`en/${x}`,`fr/${x}`]);