通过扩展运算符进行数组解构

时间:2017-12-10 15:40:26

标签: javascript arrays destructuring

关于数组解构的MDN documentation是非常明显的,但是,我无法理解在解构数组时幕后发生的事情:

let Arr = [1, 3, 5, 6];
let newArr = [];

[newArr[0], ...newArr] = Arr;

console.log(Arr); // returns [1, 3, 5, 6]
console.log(newArr); // returns [3, 5, 6]

newArr如何不继承Arr的第一个数组成员?

2 个答案:

答案 0 :(得分:3)

如果你有

[x, ...y] = Arr;

就像

x = Arr[0];
y = Arr.slice(1);

所以当你有

[newArr[0], ...newArr] = Arr;

就像

newArr[0] = Arr[0];
newArr = Arr.slice(1);

解构涉及的任务从左到右发生。住:

const listener = {
  get foo() {
    return {
      set bar(value) {
        console.log('setting bar');
      },
    };
  },
  set foo(value) {
    console.log('setting foo');
  },
};

[listener.foo.bar, ...listener.foo] = [1, 2, 3];

答案 1 :(得分:0)

它有效,但它会用其余参数覆盖索引零处的第一个值。



let array0 = [1, 3, 5, 6],
    array1 = [],
    array2 = [];

[array2[0], ...array1] = array0;

console.log(array0); // [1, 3, 5, 6]
console.log(array1); // [3, 5, 6]
console.log(array2); // [1]

.as-console-wrapper { max-height: 100% !important; top: 0; }