我想变换以下数组是动态一个动态对象
例如
让
array=[{"MyFirstValue":"1"},{MySecondvalue:"2"}]
我想将其转换为动态对象
喜欢
let newobject={MyFirstValue:"1",MySecondvalue:"2" }
这里的动态对象是,根据数组中值的数量,newobject应该能够转换 例如
如果数组值更改=
array=[{"MyFirstValue":"1"},{MySecondvalue:"2"},{MyThirdValue:"2"}]
新对象应转换为
newobject={MyFirstValue:"1",MySecondvalue:"2",MyThirdValue:"2" }
我尝试使用array.map并推入值,但无法设置key属性
就像减少将数组简化为对象一样。我不确定是否可以使用reduce。
答案 0 :(得分:5)
假设键是唯一的,则可以使用Object.assign
完成此操作。
const array = [{"key1":"1"}, {"key2":"2"}];
const newObject = Object.assign({}, ...array);
console.log(newObject);
答案 1 :(得分:1)
您需要在对象中具有唯一键。另外,您不要期望所有对象都具有100%唯一键。为什么不让属性{key: 1, key: 2}
是一个值数组,而不要使用key
? {key: [1, 2]}
。我会使用Array.prototype.reduce
来实现这一目标。
const array = [{"key":"1", other: 'FOO'},{key:"2", dynamic: 'BAR', other: 'BAZ'}]
const object = array.reduce((initial, value) => {
Object.keys(value).forEach((key) => {
if(initial[key]) initial[key].push(value[key])
else initial[key] = [value[key]]
})
return initial;
}, {})
console.log(object)
答案 2 :(得分:0)
尝试
let newobject= array.reduce((x,y)=> ({...x,...y}), {});
let array=[{"MyFirstValue":"1"},{MySecondvalue:"2"}]
let newobject= array.reduce((x,y)=> ({...x,...y}), {});
console.log(newobject);
答案 3 :(得分:0)
使用ES5:
var input = [{"MyFirstValue":"1"},{MySecondvalue:"2"},{MyThirdValue:"2"}];
var output = Object.assign.apply({}, input);
console.log(output);