Javascript 数组参数中的对象键值分解
我试图按照d3实现Github风格的日历视图。我有点困惑的是使用的一些语法。在将{close:previous}指定为回调的第一个参数的行中,我不理解正在发生的对象分解。有人能解释一下Javascript 数组参数中的对象键值分解,javascript,d3.js,Javascript,D3.js,我试图按照d3实现Github风格的日历视图。我有点困惑的是使用的一些语法。在将{close:previous}指定为回调的第一个参数的行中,我不理解正在发生的对象分解。有人能解释一下close和previous在最里面的上下文中指的是什么吗 data = { const data = await d3.csv("https://gist.githubusercontent.com/mbostock/354a9c93174a17eb6b80f4678e3d3ae9/raw/9d20ec96a
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
是具有以下属性的对象数组:
日期
,打开
,高
,低
,关闭
,卷
这只是重命名属性的一种方式。在您的场景中,close将重命名为previous 在最里面的上下文中,close
指的是第二次分解中的close
,而previous
指的是第一次分解中的close
根据ECMAScript 2015规范,您可以在对象解构分配中指定标识符引用,以便在冒号之后声明一个名为标识符的变量,并且该值将被放入该引用中有时称为重命名。
您甚至可以使用像({a:b=def})=>{}
这样的初始值设定项,它将充当默认值
参见规范:我认为“第一个”close
将被重命名为previous