Javascript 如何为数组中的每个对象指定它们自己的密钥?
我试图以这样一种方式更改数据,即对象的每个元素都有自己的键。我认为我的问题相当简单,但我还没有想出一个方法来解决这个问题 我的数据现在的排列方式:Javascript 如何为数组中的每个对象指定它们自己的密钥?,javascript,key,key-value,Javascript,Key,Key Value,我试图以这样一种方式更改数据,即对象的每个元素都有自己的键。我认为我的问题相当简单,但我还没有想出一个方法来解决这个问题 我的数据现在的排列方式: [ { "country name": "Qatar", "GDP": "140,649.2", "country code": "QAT" }, { "country name": "MacaoSAR,China", "GDP": "139,767.3", "country code":
[
{
"country name": "Qatar",
"GDP": "140,649.2",
"country code": "QAT"
},
{
"country name": "MacaoSAR,China",
"GDP": "139,767.3",
"country code": "LUX"
},
...
我希望我的数据的排列方式:
data: {
'QAT': {
"country name": "Qatar",
"GDP": "140,649.2",
},
'LUX': {
"country name": "MacaoSAR,China",
"GDP": "139,767.3",
},
...
请不要介意不同的键值对。我只关心如何在
{}
括号内给我的值一个键值,如第二个示例所示 您可以将其作为对象发送,而不是像这样的数组
{
"NLD": {
"fillKey": "conflict",
"name": "2012 Northern Mali conflict",
"startOfConflict": 2012
},
"LBY": {
"fillKey": "conflict",
"name": "2011– present Libyan factional fighting",
"startOfConflict": 2011
}
}
这将是一个问题,JSON中的键需要是唯一的,例如,case键可能会重复,因此在解析时可能会丢失一些数据,最好使用当前结构,或者可以使用数字作为键。非重复的
“国家代码”
键的解决方案:
var arr = [ // exemplary array
{
"country name": "Qatar",
"GDP": "140,649.2",
"country code": "QAT"
},
{
"country name": "MacaoSAR,China",
"GDP": "139,767.3",
"country code": "LUX"
}
], rearranged = {};
arr.forEach(function(obj){
var info = {};
Object.keys(obj).forEach((k) => k === "country code" || (info[k] = obj[k]));
rearranged[obj["country code"]] = info;
});
console.log(JSON.stringify(rearranged, 0, 4));
输出:
{
"QAT": {
"country name": "Qatar",
"GDP": "140,649.2"
},
"LUX": {
"country name": "MacaoSAR,China",
"GDP": "139,767.3"
}
}
只需将第二个示例包装在
{}
中,这应该对您有用。我不太明白您的意思,包装我的第二个示例并不能真正为每个元素提供一个键值。startofflict
应该来自哪里?或fillKey
?或者name
?我不明白您从第一个示例到第二个示例的逻辑过程。但在第一个示例中,对象位于数组中,因此它们没有键,在第二个示例中,对象位于另一个对象中。因此,要给你的对象密钥,你需要把它们放在一个对象内。你确定“国家代码”不会重复吗?