[英]How to Convert an array into Object using javascript without using Object.assign
我有一个数组
[{0:{title:"test1"}},{1:{message1:"message1"}},{2:{message2:"message2"}}]
我想以以下格式获取对象
{title:"test1",message1:"message1",message2:"message2"}
我正在尝试以下代码,但没有运气
var rv = {};
for (var i = 0; i < messageArray.length; ++i)
if (messageArray[i] !== undefined) rv[i] = messageArray[i];`
结果我
{0: {title:"test1"}, 1: {message1:"message1"},2: {message2:"message2"}}
您可以使用reduce
来汇总数据,并可以使用Object.assign()
将新属性合并到一个对象中。
let arr = [{0:{title:"test1"}},{1:{message1:"message1"}},{2:{message2:"message2"}}]; let result = arr.reduce((c, v, i) => Object.assign(c, v[i]),{}); console.log(result);
如果对象上的键不在序列上,则可以使用Object.values()
获取值。
let arr = [{0:{title:"test1"}},{1:{message1:"message1"}},{2:{message2:"message2"}}]; let result = arr.reduce((c, v, i) => Object.assign(c, Object.values(v)[0]), {}); console.log(result);
您可以使用.map()
和.reduce()
:
let data = [ {0:{title:"test1"}}, {1:{message1:"message1"}}, {2:{message2:"message2"}} ]; let result = data.map((c, i) => c[i]) .reduce((a, c) => Object.assign(a, c), {}); console.log(result);
文件:
您可以通过扩展到Object.assign()
来组合项目。 然后通过Object.values()
获得内部值,并通过扩展到Object.assign()
再次合并它们:
const data = [{0:{title:"test1"}},{1:{message1:"message1"}},{2:{message2:"message2"}}]; const result = Object.assign(...Object.values(Object.assign({}, ...data))); console.log(result);
您应该将阵列弄平
const rv = [];
for (var i = 0; i < messageArray.length; ++i) {
if (messageArray[i] !== undefined)
rv.push(messageArray[i]);
}
然后可以使用Array.reduce
,它应该看起来像
rv.reduce((result, element) => {
Object.keys(element).forEach((key) => {
result[key] = element[key];
});
return result;
}, {});
您可以遍历每个属性,并使用Object.assign扩展每个属性的当前对象。
var object = {}; var input = [{0:{title:"test1"}},{1:{message1:"message1"}},{2:{message2:"message2"}}]; for (var i = 0; i < input.length; i++) { object = Object.assign(input[i][i], object); } console.log(object); /* { "message2": "message2", "message1": "message1", "title": "test1" } */
以下代码应在没有Object.assign的情况下提供所需的结果:
//Using map() and reduce()
var arr = [{0:{title:"test1"}},{1:{message1:"message1"}},{2:{message2:"message2"}}];
var result = arr.map(function(item,i){
return item[i];
})
.reduce(function(acc,item){
return {...acc,...item}
},{})
console.log(result); // {title: "test1", message1: "message1", message2: "message2"}
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.