使用d3或jquery的json对象中有多少不同的密钥对值
how many different key pair values in a json object using d3 or jquery
我有一个对象数组,看起来有点像这个
[ {
"created_date" : "2013-08-12T06:25:00",
"descriptor" : "Noise, Barking Dog (NR5)"
},
{
"created_date" : "2013-08-17T06:25:00",
"descriptor" : "Noise, Barking Dog (NR5)"
},
{
"created_date" : "2013-08-17T02:25:00",
"descriptor" : "Noise, Barking Dog (NR5)"
},
{
"created_date" : "2013-08-12T06:25:00",
"descriptor" : "Loud Music"
},
{
"created_date" : "2013-08-17T06:25:00",
"descriptor" : "Loud Music"
},
{
"created_date" : "2013-08-17T02:25:00",
"descriptor" : "Construction Noise"
},
{
"created_date" : "2013-08-17T02:25:00",
"descriptor" : "Construction Noise"
}]
问题是我如何计算有多少"描述符"类别及其名称我应该如何使用D3或jquery来处理这个问题。基本上,这个想法是形成不同的组
您可以使用d3的d3.map()
将每个descriptor
映射到其出现次数。
var map = d3.map();
data.forEach(function(d) {
var descriptorCount = map.get(d.descriptor);
map.set(d.descriptor, descriptorCount === undefined ? 1 : ++descriptorCount);
});
console.log(map); // {Noise, Barking Dog (NR5): 3, Loud Music: 2, Construction Noise: 2}
Fiddle
var UniqueDescriptors = "";
for (var i =0; i<array.length;i++) {
var obj = array[i];
if (obj.descriptor && UniqueDescriptors.indexOf(obj.descriptor) == -1) {
UniqueDescriptors += obj.descriptor + '|';
}
}
// this returns just the number
//return (UniqueDescriptors.split('|').length - 1);
// this returns an array of the different descriptors if you need the names. you also can count the number by accessing the length property
return UniqueDescriptors.split('|').pop();
当然,这个脚本的明显缺陷是它假定描述符值中没有管道。
只需迭代数组并收集每个描述符:
var descriptors = (function(data) {
var seen = {};
data.forEach(function(obj) {
seen[obj.descriptor] = true;
});
return Object.keys(seen);
}(data));
要获得唯一描述符的数量,只需获取数组的长度:
descriptors.length
如果您需要支持不支持Object.keys
或Array#forEach
:的旧浏览器
var descriptors = (function(data) {
var seen = {};
var descriptors = [];
for (var i = 0, l = data.length; i < l; i++) {
var descriptor = data[i].descriptor;
if (!seen[descriptor]) {
descriptors.push(descriptor);
seen[descriptor] = true;
}
}
return descriptors;
}(data));
相关文章:
- 如何在javascript中获取数组密钥对的json子值
- html keygen替代方案,在浏览器中生成密钥对
- 访问 JSON 中的嵌套对象(密钥对/MYSQL 数组)
- 在Javascript中生成PGP密钥对,并使用加密的PGP私钥对文本进行签名
- OpenPGP.min.js 不会生成密钥对
- JSON 数据加密/解密或密钥值对
- 在 PHP 可读的 JavaScript 中创建 PEM 密钥对
- 如何在ajax javascript中获取数据类型json的特定值-密钥对
- 从json(不在正确的密钥对中)创建javascript对象(带有密钥对)
- 使用d3或jquery的json对象中有多少不同的密钥对值
- java.lang.RuntimeException:无法生成DH密钥对
- 在嵌套json对象中查找和更新,而不更改不同子路径中的相同密钥对值
- 如何使用Web Crypto生成密钥对,并在Firefox AddOn中访问其密钥
- 使用javascript将数组存储为json中的密钥对
- 不能使用密钥对验证Node.js加密中的签名
- jquery对象密钥对未定义
- 在MapReduce MongoDB中按密钥对数据进行分组
- Angularjs:从密钥对中解析值
- 如何返回仅包含一个特定密钥对的多个集合
- Ng-options带有一个密钥对对象数组