javascript - D3.js 中的数组查找
问题描述
在 D3.js(或一般的 JavaScript)中,如果你有一个像
var out = [
{name:"John", car:"bmw", colour:"blue"},
{name:"Joe", car:"ford", colour:"red"},
{name:"Anna", car:"honda", colour:"green"},
{name:"Mary", car:"bmw", colour:"red"},
];
请问我怎样才能得到car
和/或colour
给定的名字?名称可以被认为是唯一的,并且数组不一定必须是数组,即 dict 也应该没问题
谢谢
解决方案
试试 d3.map,它会在给定键的数据数组中返回一个项目。它的创建如下:
d3.map(array, function(d) { return d.key; });
然后,您可以通过以下方式访问地图中的项目:
map.get("value");
或者检查是否存在这样的值:
map.has("value");
有关更多信息,请参阅文档。
这是您的数据集的示例:
var out = [
{name:"John", car:"bmw", colour:"blue"},
{name:"Joe", car:"ford", colour:"red"},
{name:"Anna", car:"honda", colour:"green"},
{name:"Mary", car:"bmw", colour:"red"},
];
var map = d3.map(out, function(d) { return d.name; });
// Get items by key:
console.log(map.get("John").car);
console.log(map.get("Anna").colour);
// Check to see if an item exists:
console.log(map.has("Joe"));
// Create a new value and access:
map.set("Ralph", {name: "Ralph",car:"bmw",colour:"red"})
console.log(map.get("Ralph"));
<script src="https://d3js.org/d3.v4.min.js"></script>
当然,您不需要为此使用 d3,常规 ES6 映射(或无数其他选项)可以同样轻松地工作:
var out = [
{name:"John", car:"bmw", colour:"blue"},
{name:"Joe", car:"ford", colour:"red"},
{name:"Anna", car:"honda", colour:"green"},
{name:"Mary", car:"bmw", colour:"red"},
];
var map = new Map(out.map(function(d) {
return [d.name,d];
}));
console.log(map.get("John"));
推荐阅读
- google-apps-script - Google Script - 从 text/html 到 application/pdf 的转换失败
- nfc - 创建文件并写入 MIFARE DESFire EV1 卡
- unity3d - 除了在 Unity3D 中使用“Assets/Gizmos”之外,如何使用自定义脚本图标
- delphi - Delphi TadoQuery - 参数类型转换
- java - 如果条件扩展类
- android - 在根项目“android”中找不到任务“assembleRelease”
- php - 从多维数组中分解数据并根据键组合元素
- jquery - 数据表排序和 responsive.recalc() 冻结我的浏览器
- c++ - tensorflow c ++尝试创建图形失败
- mysql - 如何将连接失败的 MySQL 转发到错误页面 (500)