我正在尝试遵循d3 tutorial来实现Github风格的日历视图。我有点困惑的是所使用的一些语法。在将{close:previous}指定为回调的第一个参数的行上,我不了解正在发生的对象分解。有人可以解释在最内在的上下文中close
和previous
指的是什么吗?
data = {
const data = await d3.csv("https://gist.githubusercontent.com/mbostock/354a9c93174a17eb6b80f4678e3d3ae9/raw/9d20ec96a40cc3fd5b8ddc9a306bd7397d5cfd16/dji.csv", d3.autoType);
return d3.pairs(data, ({close: previous}, {date, close}) => {
return {date, value: (close - previous) / previous};
});
}
顺便说一句,
data
是具有以下属性的对象数组:date
,open
,high
,low
,close
,volume
最佳答案
在最内部的上下文中,close
在第二个解构中指的是close
,而previous
在第一个解构中指的是close
。
根据ECMAScript 2015规范,您可以在对象分解分配中指定标识符引用,因此可以在冒号后声明一个名为标识符的变量,并将该值放入该引用中。有时将其称为重命名。
您甚至甚至可以使用初始化器(如({a: b = def}) => {}
)作为默认值。
查看规格:https://www.ecma-international.org/ecma-262/6.0/#sec-runtime-semantics-destructuringassignmentevaluation
关于javascript - 数组参数中的对象键值解构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56128427/