деструктуризация массива с использованием других элементов массива - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть следующий массив пользователей:

const usersArray = [ 'A', 'B'];

это может быть любая длина:

const usersArray = [ 'A', 'B', 'C', 'D'];

Я извлекаю первые два, используя следующие имена переменных: userA и userB. Эти имена переменных известны.

const [ userA, userB] = usersArray;

Тогда у меня есть несколько неизвестных имен пользователей, которые я получаю в массиве других пользователей:

const otherUsers = [ 'userC', 'userD', 'userE'];

как извлечь значения из usersArray под именами переменных внутри otherUsers? учитывая, что мне сначала нужно извлечь известные, затем другие.

Обновление:

Я могу сделать unshift для первых двух известных переменных:

otherUsers.unshift('userA', 'userB')

так что теперь все мои переменные находятся внутри otherUsers. как я могу извлечь их по одному?

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Что вам нужно сделать, это использовать eval () .

const usersArray = ['A', 'B', 'C', 'D'];

const otherUsers = ['userC', 'userD', 'userE'];

const allUsers = otherUsers.unshift('userA', 'userB')

let joined = allUsers.join(',');

eval(`let [${joined}] = usersArray`);

Теперь, если вы запустите console.log(userA, userB, userC, userD, userE), вы получите заданные переменные.

N.B. поскольку eval не является хорошим способом для оценки строки кода, вы можете использовать window.Function . Просто замените вызов eval на вызов Function следующим образом:

Function(`let [${joined}] = usersArray`)
0 голосов
/ 01 сентября 2018

просто используйте свойство rest:

 const [ userA, userB, ...otherUsers] = usersArray;

Или используйте slice:

 const [ userA, userB] = usersArray;
 const otherUsers = usersArray.slice(2);
...