我想在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);
const newObject = array.reduce((current, next) => {
return { ...current, ...next};
}, {})
如果你使用的是ES5而不是ES6:
var newObject = array.reduce(function(current, next){
return Object.assign({}, current, next);
}, {})
Object.assign(current, next)
而不是Object.assign({}, current, next)
来解决。 - Ry-使用现代JS(个人见解):
const arr = [{name1:"value1"}, {name2:"value2"}, {a:1,b:2}];
const obj = Object.fromEntries(arr.flatMap(Object.entries));
console.log(obj);
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 );
与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)
var obj
,所以使用 forEach
更加合适。 - Benji LeesObject.keys(k).forEach(a => obj[a] = k[a])
是 Object.assign(obj, k)
的一个更慢、不易读和不兼容的版本。 - Ry-使用 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);
使用 ES6
的 Array.map() 方法:
var arr=[{"name1":"value1"},{"name2":"value2"}];
var obj = {};
arr.map(item => obj[Object.keys(item)] = item[Object.keys(item)]);
console.log(obj);
使用ES6
的spreaqd(...)
赋值和Object.assign()方法:
let arr=[{"name1":"value1"},{"name2":"value2"}];
let obj = Object.assign({}, ...arr);
console.log(obj);
myObject
和myArray
。myObject = {};
myArray = [
{itemOneKey: 'itemOneValue', itemTwoKey: 'itemTwoValue'},
{itemThreeKey: 'itemThreeValue'}
];
只需尝试这个:
myArray.map(obj => {
Object.keys(obj).map(key => myObject[key] = obj[key])
});
const myObject = {};
const myArray = [
{itemOneKey: 'itemOneValue', itemTwoKey: 'itemTwoValue'},
{itemThreeKey: 'itemThreeValue'}
];
myArray.map(obj => {
Object.keys(obj).map(key => myObject[key] = obj[key])
});
console.log(myObject);
Object.keys(obj).map(key => myObject[key] = obj[key])
是一种速度较慢、可读性较差、兼容性较低的代码,Object.assign(myObject, obj)
是更好的选择。 - Ry-