如何将对象数组转换为具有键值对的对象
问题描述:
我想将对象数组转换为带有javascript中的键值对的对象。如何将对象数组转换为具有键值对的对象
var arr=[{"name1":"value1"},{"name2":"value2"},...}];
我怎样才能将其转换为一个对象,如
{"name1":"value1","name2":"value2",...}
我希望它在大多数浏览器都支持。
答
试试这个简单的逻辑
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);
答
你可以运行一个减少在阵列上,并返回一个新的对象。但重要的是要记住,如果属性相同,它们将被覆盖。
const newObject = array.reduce((current, next) => {
return { ...current, ...next};
}, {})
如果您正在使用ES5并没有ES6:
var newObject = array.reduce(function(current, next){
return Object.assign({}, current, next);
}, {})
答
var arr = [{"name1": "value1"},{"name2": "value2"}];
var obj = {};
arr.map(k => Object.keys(k).forEach(a => obj[a] = k[a]))
console.log(obj)
+1
一个map方法返回一个新的数组,但是这个函数只是用来变异'var obj',所以'forEach'更适合。 –
答
你可以使用Object.assign
和spread syntax ...
用给定的数组创建单个对象与对象。
var array = [{ name1: "value1" }, { name2: "value2" }],
object = Object.assign({}, ...array);
console.log(object);
答
试试这个:
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));
答
使用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);
使用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);
使用Object.assign()方法与ES6
spreaqd(...)
分配:
let arr=[{"name1":"value1"},{"name2":"value2"}];
let obj = Object.assign({}, ...arr);
console.log(obj);
这是不是很清楚的男人。给我们更多的东西来理解..给你一个更好的例子和你想要的模式。 –