我目前的JSON结构如下所示。
kd> $$>a< getuname4proc.txt
xx-PC$ smss.exe
LOCAL SERVICE svchost.exe
xx taskhost.exe
我需要构建一些看起来像这样的东西。
[ {A: 84 , B: 17 , C: 11 } ]
所以我需要一个具有附加属性的新结构(这种情况颜色),它取决于初始键值。 “A”,“B”或“C”。
我没有要求一个完整的答案(如果你不想让一个人随意做),我只想知道这种操作需要哪种功能。
答案 0 :(得分:4)
使用Object.keys
,Array.map
函数和辅助&#34; 颜色映射&#34;的解决方案对象:
var arr = [ {A: 84 , B: 17 , C: 11 }],
colorMap = {A:"black", B:"blue", C:"amber"}, // can be extended with any other relations
current = arr[0];
var result = Object.keys(current).map(function(k) {
return {'name': k, 'value': current[k], 'color': colorMap[k]};
});
console.log(JSON.stringify(result, 0, 4));
console.log
输出:
[
{
"name": "A",
"value": 84,
"color": "black"
},
{
"name": "B",
"value": 17,
"color": "blue"
},
{
"name": "C",
"value": 11,
"color": "amber"
}
]
答案 1 :(得分:2)
你可以使用 for..in 来循环你的键,然后映射一个新对象:
var current = [ {A: 84 , B: 17 , C: 11 } ];
var result = [];
for(var key in current[0]){
var name = key;
var value = current[0][key];
var color = "";
switch(key){
case "A":
color = "black";
break;
case "B":
color = "blue";
break;
case "C":
color = "amber";
break;
};
result.push({name : name, value : value, color: color});
}
答案 2 :(得分:2)
你不需要破坏任何东西,一个简单的循环就足以创建新的结构:
var result = [];
for (var prop in input[0])
result.push({
name: prop,
value: input[0][prop],
color: colorForName(prop)
});