我想在javascript中将对象数组转换为具有键值对的对象。
var arr=[{"name1":"value1"},{"name2":"value2"},...}];
我如何将其转换为对象,例如
{"name1":"value1","name2":"value2",...}
我希望大多数浏览器都支持它。
我想在javascript中将对象数组转换为具有键值对的对象。
var arr=[{"name1":"value1"},{"name2":"value2"},...}];
我如何将其转换为对象,例如
{"name1":"value1","name2":"value2",...}
我希望大多数浏览器都支持它。
您可以使用Object.assign
和传播语法...
来使用给定的对象数组创建单个对象。
var array = [{ name1: "value1" }, { name2: "value2" }],
object = Object.assign({}, ...array);
console.log(object);
试试这个简单的逻辑
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 );
您可以对数组运行 reduce 并返回一个新对象。但重要的是要记住,如果属性相同,它们将被覆盖。
const newObject = array.reduce((current, next) => {
return { ...current, ...next};
}, {})
如果您使用的是 es5 而不是 es6:
var newObject = array.reduce(function(current, next){
return Object.assign({}, current, next);
}, {})
与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)
使用现代 JS (YMMV):
const arr = [{name1:"value1"},{name2:"value2"},{a:1,b:2}];
const obj = Object.fromEntries(arr.flatMap(Object.entries));
console.log(obj);