将数组转换为动态对象

时间:2019-01-29 13:15:54

标签: javascript arrays typescript

我想变换以下数组是动态一个动态对象

例如

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。

4 个答案:

答案 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);