d3.keys()语法澄清?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了d3.keys()语法澄清?相关的知识,希望对你有一定的参考价值。

您非常擅长学习javascript和d3.js

以下语法从名为“data”的关联数组中保存的每个对象创建属性名称的新数组。

排除“数据”中第一个对象的属性名称。

d3.keys(data[0])
  .filter(function(key) { return key !== "date";}))

我不明白为什么下面的代码没有给我相同的结果?

d3.keys(data)
  .filter(function(key) { return key !== "date";}))

为什么告诉d3选择[0]索引位置以及过滤对象属性名称。 d3.keys(object)方法是否通过关联数组运行并返回一个包含每个指定对象的属性名称的新数组?它让我觉得你只需要过滤?

答案

解释很简单:你不能将数组传递给d3.keys,它必须是一个对象。 API很清楚:

返回包含指定对象的属性名称的数组。 (强调我的)

如果你看看source code,你会发现d3.keys使用了for...in循环:

export default function(map) {
    var keys = [];
    for (var key in map) keys.push(key);
    return keys;
};

这不适用于数组。让我们来看看:

function d3keys(map) {
  var keys = [];
  for (var key in map) keys.push(key);
  return keys;
}

var myArray = [{
  x: "foo",
  y: "bar"
}, {
  x: "foobar",
  y: "barbaz"
}];

console.log(d3keys(myArray))

以上是关于d3.keys()语法澄清?的主要内容,如果未能解决你的问题,请参考以下文章

理解/澄清视图控制器语法

php 语法 $b = (6 << 1);澄清[重复]

在下面的代码片段中的剩余 ='passthrough' 处的代码中出现语法错误

如何获取vfor中的key值并打印到控制台?

OpenGL - 需要一个简单的概念澄清

JSP语法