使用JavaScript和/或D3.js在对象数组中获取给定键的所有值
Getting all the values for a given key, in an array of objects, using JavaScript and/or D3.js
我正在构建一个使用D3.js用于图表的仪表板。我有一个很大的对象数组。每个对象有32个具有相同键的键值对。有没有人知道一种获取给定键的所有值的好方法?
编辑:当我提出这个问题时,我想到了一个简单的函数。也认为可能已经存在一个函数,我没有找到。
function getValues(data, key){
var values = [];
data.forEach(function(d){
var v = d[key];
if(!d3.set(values).has(v)){
values.push(v);
}
})
return values;
}
如果你已经在使用d3,看看Mike Bostock的"Underscore Equivalents" gist: https://gist.github.com/mbostock/3934356
data.map(function(d) { return d[key]; });
将获得所有值。如果您只想要唯一的值,请使用
d3.set(data.map(function(d) { return d[key]; })).values());
我也必须使用D3创建许多仪表板。我经常使用的另一个选项是underscore.js。它节省了我的时间,并且根据我的需要帮助压缩代码。在下划线中有一个叫做'pluck'的函数,它做的正是你所要求的。对于一个对象数组,你可以声明一个键,它将返回所有的值。
的例子:
var data = [{name: 'dan', value: 40}, {name: 'ryan', value: 50}];
var getKeys = _.pluck(data, 'name');
=> ["dan", "ryan"]
http://underscorejs.org/摘下
使用d3.keys()
:
d3.keys(data).filter(function(key) { return key })
假设您指的是简单的原始值values
-
你可以使用修改后的myne代码(最初是用来平化对象实际上) -来查找特定键(递归)的所有值:
示例:对于非常复杂的对象,让我们查找给定键"a"的所有值
var data ={a:5,g: [{"a":1,"b":[4,5,6,{a:55},[33, new Date()]]},{"c":2},{"a":3}]};
var g=[];
if (!Object.keys) { //not all browsers support it
Object.keys = function (obj) {
var keys = [],
k;
for (k in obj) {
if (Object.prototype.hasOwnProperty.call(obj, k)) {
keys.push(k);
}
}
return keys;
};
}
function actualType(o)
{
return Object.prototype.toString.apply(o);
}
var arr=actualType([]);
var obj=actualType({});
function work(a, val)
{
if (actualType(a) == obj || actualType(a) == arr)
{
for (var j = 0; j < Object.keys(a).length; j++)
{
if (Object.keys(a)[j] == val) g.push(a[Object.keys(a)[j]]);
else
work(a[Object.keys(a)[j]], val);
}
}
}
work(data,'a') //'a' is the value we're searching
console.log(g) //[5, 1, 55, 3]
http://jsbin.com/yofafove/1/edit 相关文章:
- 获取数组的总值
- 按最大值获取数组索引
- React.js如何从js文件中获取数组
- TinyMCE获取数组数据
- 如何获取数组详细信息另一页
- 使用javascript从节点属性获取数组值
- 使用JavaScript获取数组中表单的所有控件
- 获取数组的长度-打印不正确的值
- 正在从JSON对象获取数组
- 什么'获取数组的已定义部分的最快方法是什么?JS
- 如何使用angular指令从html中获取数组
- 如何获取数组中数字的最大出现次数
- 根据优先级获取数组的值
- JAVASCRIPT:获取数组中的值
- 获取数组的元素,无论索引的大小如何
- JavaScript:在XML中搜索节点并从该节点获取数组
- 无法获取数组的长度
- 在数字索引循环中获取数组项的键
- 如何使用JavaScript或jQuery获取数组中选定的optgroup和选项
- Javascript-函数获取数组元素参数未定义/为null