如何迭代对象数组并按预期返回一个新对象?
在数组中有2个嵌套的对象。我想通过迭代这些对象并返回新对象来创建一个新对象。
我试过这样,但它不起作用:
const props = datas.map(data => {
props.data.bd.locale = data;
}, {}); //new object required
答案 0 :(得分:1)
如果我理解正确,你想从一个对象数组中创建一个对象。在这种情况下,您可以这样做:
const props = datas.reduce((total, data) => {
total[data.id] = data;
return total;
}, {});
total
是一个新对象。请记住使用唯一标识符等。
答案 1 :(得分:0)
它对我有用:
const props:any = {}
datas.map(data => {
var label = data.bd.locale;
return props[label] = data;
});
答案 2 :(得分:0)
您可以使用reduce来创建新对象
const props = datas.reduce((acc, data) => {
acc[data.bd.locale] = data;
return acc
}, {});
console.log(props);
或只是使用forEach
const props = {}
datas.forEach((acc, data) => {
props[data.bd.locale] = data;
});
答案 3 :(得分:0)
让我们说你有这个:
const datas = [
{
fname: "jane",
lname: "dane",
description: {
eyes: "blue",
skin: "pale"
}
},
{
fname: "john",
lname: "doe",
description: {
eyes: "black",
skin: "brown"
}
}
]
然后您想将所有eyes
更改为“绿色”:
const props = datas.map(item=>{
const temp = {...item, description: { ...item.description, eyes: "green" } }
return temp
})
你会得到结果:
const datas = [
{
fname: "jane",
lname: "dane",
description: {
eyes: "green",
skin: "pale"
}
},
{
fname: "john",
lname: "doe",
description: {
eyes: "green",
skin: "brown"
}
}
]
这样,您不会改变数据的值,同时,您正在创建一个变异的实例。
如果您不使用嵌套对象,请说:
const datas = [
{
fname: "jane",
lname: "dane"
},
{
fname: "john",
lname: "doe"
}
]
然后您想将所有lname
更改为awesome
:
const props = datas.map(item=>{
const temp = {...item, lname: 'awesome' }
return temp
})