使用其他数组元素进行数组解构

时间:2018-09-01 15:12:32

标签: javascript arrays ecmascript-6 destructuring

我有以下用户数组:

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

它可以是任意长度:

const usersArray = [ 'A', 'B', 'C', 'D'];
我正在使用以下变量名称提取前两个名称:userA和userB。这些变量名是已知的。

const [ userA, userB] = usersArray;

然后我在其他用户数组中获得了一些未知的用户名:

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

如何在usersArray内的变量名下从otherUsers中提取值?鉴于我首先需要提取已知的,然后提取其他。

更新:

我可以对前两个已知变量进行平移:

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

所以现在我所有的变量都在otherUsers内部。 我怎样才能一一提取它们?

2 个答案:

答案 0 :(得分:1)

只需使用rest属性:

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

或者使用slice

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

答案 1 :(得分:-1)

您所要做的就是使用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),将获得定义的变量。

因为eval中没有good way来评估代码字符串,所以可以使用window.Function。只需将eval调用替换为Function调用,如下所示:

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