简体   繁体   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?

I'm new to JavaScript. 我是JavaScript的新手。 I'm sure this would be easy for the experienced person. 我相信这对经验丰富的人来说很容易。

The SimpleDB getAttributes function of Amazon AWS SDK for Node.JS returns an array of data like this: 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"}]}

I want to convert it into a simple object like this: 我想将它转换为这样一个简单的对象:

my_JSON_object = {"Attributes":{"myName":"myValue","myName":"myValue",...}}

So that I can use dot-syntax to access things, such as: Attributes.myName etc. 这样我就可以使用点语法来访问事物,例如:Attributes.myName等。

How do I do such a conversion? 我该怎么做这样的转换?

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 is an excellent lib for doing such things. UnderscoreJS是一个很好的lib来做这些事情。 It will make your code cleaner and easier to maintain. 它将使您的代码更清晰,更易于维护。

var result = _.chain(my_JSON_object.Attributes)
.map(function(item){return [item.Name, item.Value]})
.object().value();

This might be a little overwhelming if you are new to the language but trust me in the long run it's going to be mighty helpful. 如果你是这门语言的新手,这可能有点压倒性,但从长远来看相信我会有很大的帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何将 javascript object 与 arrays 转换为具有相应名称和值的对象数组? - how do you convert javascript object with arrays in to array of objects with corresponding name and value? 如何在 JavaScript 中将嵌套对象数组转换为具有键值对的对象 - How to convert an array of nested objects to an object with key, value pairs in JavaScript 如何将JavaScript对象数组转换为单个对象? - How do you convert an array of JavaScript objects to a single object? 用myValue()替换myValue的正确术语 - Proper terminology for replacing myValue with myValue() 如何在JavaScript中将多个对象转换为键值对数组[] - How to convert multiple Objects to an Array [] of key-value pairs in javascript 如何将对象数组转换为具有键值对的对象 - How to convert an array of objects to object with key value pairs 如何使用映射的键值对将数组转换为javascript中的对象? - How to convert an array into an object in javascript with mapped key-value pairs? 如何将 Object {} 转换为 JavaScript 中键值对的数组 [] - How to convert an Object {} to an Array [] of key-value pairs in JavaScript 如何将对象中的键值对转换为对象数组? - How do I turn key value pairs in object into array of objects? 如何使用 json 数组创建一个新的 object,只有名称-值对和 javascript? - How do I use a json array to create a new object with only name-value pairs with javascript?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM