我正在尝试遵循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

最佳答案

在最内部的上下文中,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/

10-13 08:39