typescript 如何将对象数组转换为具有键值对的对象
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/43626156/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to convert an array of objects to object with key value pairs
提问by HiddenMarkow
I want to convert an array of objects to object with key value pairs in javascript.
我想在javascript中将对象数组转换为具有键值对的对象。
var arr=[{"name1":"value1"},{"name2":"value2"},...}];
How can i convert it to an object such as
我如何将其转换为对象,例如
{"name1":"value1","name2":"value2",...}
I want it to be supported in majority of browsers.
我希望大多数浏览器都支持它。
回答by Nina Scholz
You could use Object.assign
and a spread syntax ...
for creating a single object with the given array with objects.
您可以使用Object.assign
和传播语法...
来使用给定的对象数组创建单个对象。
var array = [{ name1: "value1" }, { name2: "value2" }],
object = Object.assign({}, ...array);
console.log(object);
回答by gurvinder372
Try this simple logic
试试这个简单的逻辑
var arr=[{"name1":"value1"},{"name2":"value2"}];
var obj = {}; //create the empty output object
arr.forEach( function(item){
var key = Object.keys(item)[0]; //take the first key from every object in the array
obj[ key ] = item [ key ]; //assign the key and value to output obj
});
console.log( obj );
回答by Benji Lees
You could run a reduce over the array and return a new object. But it is important to remember that if properties are the same they will be overwritten.
您可以对数组运行 reduce 并返回一个新对象。但重要的是要记住,如果属性相同,它们将被覆盖。
const newObject = array.reduce((current, next) => {
return { ...current, ...next};
}, {})
If you are using es5 and not es6:
如果您使用的是 es5 而不是 es6:
var newObject = array.reduce(function(current, next){
return Object.assign({}, current, next);
}, {})
回答by prasanth
use with Array#forEach
and Object.keys
与Array#forEach
和一起使用Object.keys
var arr = [{"name1": "value1"},{"name2": "value2"}];
var obj = {};
arr.map(k => Object.keys(k).forEach(a => obj[a] = k[a]))
console.log(obj)
回答by Rohit Jindal
Using for...inloop :
使用for...in循环:
var arr=[{"name1":"value1"},{"name2":"value2"}];
var obj = {};
for (var i in arr) {
obj[Object.keys(arr[i])] = arr[i][Object.keys(arr[i])];
}
console.log(obj);
Using Array.map()method with ES6
:
使用Array.map()方法ES6
:
var arr=[{"name1":"value1"},{"name2":"value2"}];
var obj = {};
arr.map(item => obj[Object.keys(item)] = item[Object.keys(item)]);
console.log(obj);
Using Object.assign()method with ES6
spreaqd(...)
assignment :
使用Object.assign()方法进行ES6
spreaqd(...)
赋值:
let arr=[{"name1":"value1"},{"name2":"value2"}];
let obj = Object.assign({}, ...arr);
console.log(obj);
回答by Gayathri
Try this:
试试这个:
var arr=[{"name1":"value1"},{"name2":"value2"}];
var new_arr=[];
$.each(arr,function(index){
$.each(arr[index],function(key,value){
var nw_obj={};
nw_obj[key]=value;
new_arr.push(nw_obj);
});
});
console.log(JSON.stringify(new_arr));