数组参数中的对象键值解构

时间:2019-05-14 10:33:15

标签: javascript d3.js

我正在尝试遵循d3 tutorial来实现Github风格的日历视图。我有点困惑的是所使用的一些语法。在将{close:previous}指定为回调的第一个参数的行上,我不了解正在发生的对象分解。有人可以解释一下closeprevious在最内在的上下文中指的是什么吗?

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是具有以下属性的对象数组:

dateopenhighlowclosevolume

2 个答案:

答案 0 :(得分:2)

在最里面的上下文中,+------+------+------+------+------+ | Co1 | Col2 | Col3 | Col4 | Col5 | +------+------+------+------+------+ | A | 1234 | 9765 | 1 | | | A | 1235 | 9765 | 2 | | | 1235 | 9765 | 3 | | | | A1 | 789 | 4567 | 9764 | 4 | | 9764 | 5 | | | | | A2 | 3453 | 4568 | 9764 | 6 | +------+------+------+------+------+ 在第二次销毁中指的是close,而close在第一个销毁中指的是previous

根据ECMAScript 2015规范,您可以在对象解构分配中指定标识符引用,因此可以在冒号后声明一个名为标识符的变量,并将该值放入该引用中。 有时称为重命名。

您甚至可以使用诸如close之类的初始值设定项。

请参阅规格:https://www.ecma-international.org/ecma-262/6.0/#sec-runtime-semantics-destructuringassignmentevaluation

答案 1 :(得分:0)

这只是重命名属性的一种方式。在您的方案关闭中被重命名为以前的。