首页 > 解决方案 > 数组参数中的对象键值解构

问题描述

我正在尝试按照 d3教程来实现 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是一个具有以下属性的对象数组:

date, open, high, low, close,volume

标签: javascriptd3.js

解决方案


在最里面的上下文中,在第二个解构close中指代,在第一个解构中指代。closepreviousclose

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

您甚至可以使用({a: b = def}) => {}将充当默认值的初始化程序。

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


推荐阅读