拆分一个键值对,给他们新的键
Split a Key Value Pair, Give Them New Keys
目前,我的 JSON 看起来像这样:
var json = {"level" : [
{"hs": 20}, //one
{"no_hs": 30} //two
]};
我需要它看起来像这样:
var json = {"level" : [
{"education" : "hs", "amount" : 20}, //one
{"education" : "no_hs", "amount" : 30} //two
]};
如何拆分键值对,生成两个值,然后向它们添加键?
您可以使用 Object.keys()
获取密钥。
var object = { "level": [{ "hs": 20 }, { "no_hs": 30 }] };
object.level = object.level.map(function (a) {
var o = {};
Object.keys(a).forEach(function (k) {
o.education = k;
o.amount = a[k];
});
return o;
});
document.write('<pre>' + JSON.stringify(object, 0, 4) + '</pre>');
您可以使用 Object.keys(obj)
到 return 给定对象的键数组。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
然后您使用 [0]
访问第一个键,因为您的对象只有一个键值对。
var json = {"level" : [
{"hs": 20}, //one
{"no_hs": 30} //two
]};
var ret = [];
json.level.forEach(function (item) {
var key = Object.keys(item)[0];
ret.push({
education: Object.keys(item)[0],
amount: item[key]
});
});
json.level = ret;
document.write('<pre>'+JSON.stringify(json, 0, 4) + '</pre>');
更简单的方法...
用 1 个地图函数解决...
对于级别数组中的每个元素,获取对象的第一个键和 return 新元素。
var json = {"level" : [
{"hs": 20}, //one
{"no_hs": 30} //two
]};
json.level = json.level.map(function(val) {
var key = Object.keys(val)[0];
return {
education: key,
amount: val[key]
};
});
目前,我的 JSON 看起来像这样:
var json = {"level" : [
{"hs": 20}, //one
{"no_hs": 30} //two
]};
我需要它看起来像这样:
var json = {"level" : [
{"education" : "hs", "amount" : 20}, //one
{"education" : "no_hs", "amount" : 30} //two
]};
如何拆分键值对,生成两个值,然后向它们添加键?
您可以使用 Object.keys()
获取密钥。
var object = { "level": [{ "hs": 20 }, { "no_hs": 30 }] };
object.level = object.level.map(function (a) {
var o = {};
Object.keys(a).forEach(function (k) {
o.education = k;
o.amount = a[k];
});
return o;
});
document.write('<pre>' + JSON.stringify(object, 0, 4) + '</pre>');
您可以使用 Object.keys(obj)
到 return 给定对象的键数组。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
然后您使用 [0]
访问第一个键,因为您的对象只有一个键值对。
var json = {"level" : [
{"hs": 20}, //one
{"no_hs": 30} //two
]};
var ret = [];
json.level.forEach(function (item) {
var key = Object.keys(item)[0];
ret.push({
education: Object.keys(item)[0],
amount: item[key]
});
});
json.level = ret;
document.write('<pre>'+JSON.stringify(json, 0, 4) + '</pre>');
更简单的方法... 用 1 个地图函数解决... 对于级别数组中的每个元素,获取对象的第一个键和 return 新元素。
var json = {"level" : [
{"hs": 20}, //one
{"no_hs": 30} //two
]};
json.level = json.level.map(function(val) {
var key = Object.keys(val)[0];
return {
education: key,
amount: val[key]
};
});