簡體   English   中英

如何將{“name”:“myName”,“value”:“myValue”}對象的數組轉換為“myName”的對象:JavaScript中的“myValue”對?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM