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