Que*_*yer 11 javascript json d3.js
我有一个想要寻求你的专业知识的问题.
这是我拥有的JSON数组:
[{"A":20,"B":32,"C":27,"D":30,"E":40}]
Run Code Online (Sandbox Code Playgroud)
我想要做的是从JSON数组中检索键(A,B,C,D,E)而不是值.我能够检索值而不是键.
我正在使用它来动态检索值:
function calculateSum(jsonArray) {
var result = 0;
for (var i = jsonArray.length - 1; i >= 0; --i)
{
var o = jsonArray[i];
A = o.A;
B = o.B;
C = o.C;
D = o.D;
E = o.E;
result = A + B + C + D + E;
return result;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
同样,我该怎么做才能使用JavaScript 检索密钥?
nra*_*itz 17
您是否正在使用D3.js标签?因为在这种情况下,你可以使用d3.keys():
var data = [{"A":20,"B":32,"C":27,"D":30,"E":40}];
d3.keys(data[0]); // ["A", "B", "C", "D", "E"]
Run Code Online (Sandbox Code Playgroud)
如果你想要所有值的总和,你可能最好使用d3.values()和d3.sum():
var data = [{"A":20,"B":32,"C":27,"D":30,"E":40}, {"F":50}];
// get total of all object totals
var total = d3.sum(data, function(d) {
// get total of a single object's values
return d3.sum(d3.values(d));
});
total; // 199
Run Code Online (Sandbox Code Playgroud)
Sah*_*hoo 11
所有当前发布的解决方案都存在问题.object.hasOwnProperty(prop)当使用for ... in循环迭代对象时,它们都没有检查.如果将属性添加到原型中,这可能会导致出现幻像键.
请注意,添加到对象原型的成员将包含在枚举中.使用hasOwnProperty方法来区分对象的真实成员是明智的.
添加一个检查hasOwnProperty 到maerics的优秀解决方案.
var getKeys = function (arr) {
var key, keys = [];
for (i = 0; i < arr.length; i++) {
for (key in arr[i]) {
if (arr[i].hasOwnProperty(key)) {
keys.push(key);
}
}
}
return keys;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46946 次 |
| 最近记录: |