[英]how do you convert javascript object with arrays in to array of objects with corresponding name and value?
[英]How do you convert an array of {“name”:“myName”,“value”:“myValue”} objects into an object of “myName”:“myValue” pairs in JavaScript?
我是JavaScript的新手。 我相信這對經驗豐富的人來說很容易。
Amazon AWS SDK for Node.JS的SimpleDB getAttributes函數返回一個數據數組,如下所示:
my_JSON_object = {"Attributes":[{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"}]}
我想將它轉換為這樣一個簡單的對象:
my_JSON_object = {"Attributes":{"myName":"myValue","myName":"myValue",...}}
這樣我就可以使用點語法來訪問事物,例如:Attributes.myName等。
我該怎么做這樣的轉換?
var my_JSON_object = {"Attributes":[{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"},{"Name":"myName","Value":"myValue"}]}
var my_new_JSON_object = { 'Attributes' : {} };
my_JSON_object.Attributes.forEach( function ( value, index ) {
my_new_JSON_object.Attributes[ value.Name ] = value.Value;
} );
var json = {"Attributes":[
{"Name":"myName","Value":"myValue"},
{"Name":"myName","Value":"myValue"},
{"Name":"myName","Value":"myValue"},
{"Name":"myName","Value":"myValue"},
{"Name":"myName","Value":"myValue"},
{"Name":"myName","Value":"myValue"},
{"Name":"myName","Value":"myValue"},
{"Name":"myName","Value":"myValue"},
{"Name":"myName","Value":"myValue"}
]}
var attrs = json.Attributes.slice(0);
json.Attributes = {};
for(var i = 0, len = attrs.length; i < len; i++) {
var attr = json.Attributes[i],
key = attr.Name,
val = attr.Value;
json.Attributes[key] = val;
}
UnderscoreJS是一個很好的lib來做這些事情。 它將使您的代碼更清晰,更易於維護。
var result = _.chain(my_JSON_object.Attributes)
.map(function(item){return [item.Name, item.Value]})
.object().value();
如果你是這門語言的新手,這可能有點壓倒性,但從長遠來看相信我會有很大的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.