将数组解构为对象的语法是什么意思?
What is the meaning of the syntax appearing to destructure an array into an object?
我正在阅读有关函数式编程的 Medium article,我看到了一种我不熟悉的语法。想知道是否有人可以阐明一些信息?看起来好像作者正在将整个数组解构为一个对象,但我认为这对一个对象和两个对象来说是不可能的,我不确定它在这个函数中的作用是什么......有没有人知道这里到底发生了什么吗?
const reduce = (reducer, initial, arr) => {
// shared stuff
let acc = initial;
for (let i = 0, { length } = arr; i < length; i++) {//<-- {length} = arr ??
// unique stuff in reducer() call
acc = reducer(acc, arr[i]);
// more shared stuff
}
return acc;
};
reduce((acc, curr) => acc + curr, 0, [1,2,3]); // 6
数组的长度为 属性
const x = [1,2,3]; console.log(x.length); // logs 3
你可以像下面这样解构对象
const obj = {a: 1, b: 2};
const {a, b} = 对象;
console.log(a, b); // 记录 1,2
您可以通过以逗号开头的新变量声明 as var, let, const.
'y' is also a let variable below
let x = 0, y = 1;
console.log(x, y) // logs 0, 1
let i = 0, { length } = arr;
解释为 arr 是长度为 属性.
的数组
设 i = 0, {length} = arr; // 写成 shorthand 用于声明变量
可以这样写
let i = 0;
let {length} = arr;
如果你想解构一个数组,你不会使用 {}
而是使用 []
const arr = [1,2,3,4,5];
const [a, b, ...c] = arr;
console.log(a, b, c) // 记录 1, 2, [3,4,5]
我希望现在已经清楚了
我正在阅读有关函数式编程的 Medium article,我看到了一种我不熟悉的语法。想知道是否有人可以阐明一些信息?看起来好像作者正在将整个数组解构为一个对象,但我认为这对一个对象和两个对象来说是不可能的,我不确定它在这个函数中的作用是什么......有没有人知道这里到底发生了什么吗?
const reduce = (reducer, initial, arr) => {
// shared stuff
let acc = initial;
for (let i = 0, { length } = arr; i < length; i++) {//<-- {length} = arr ??
// unique stuff in reducer() call
acc = reducer(acc, arr[i]);
// more shared stuff
}
return acc;
};
reduce((acc, curr) => acc + curr, 0, [1,2,3]); // 6
数组的长度为 属性
const x = [1,2,3]; console.log(x.length); // logs 3
你可以像下面这样解构对象
const obj = {a: 1, b: 2}; const {a, b} = 对象; console.log(a, b); // 记录 1,2
您可以通过以逗号开头的新变量声明 as var, let, const.
'y' is also a let variable below
let x = 0, y = 1;
console.log(x, y) // logs 0, 1
的数组let i = 0, { length } = arr;
解释为 arr 是长度为 属性.设 i = 0, {length} = arr; // 写成 shorthand 用于声明变量
可以这样写
let i = 0;
let {length} = arr;
如果你想解构一个数组,你不会使用
{}
而是使用[]
const arr = [1,2,3,4,5]; const [a, b, ...c] = arr; console.log(a, b, c) // 记录 1, 2, [3,4,5]
我希望现在已经清楚了