Arrays 将数组映射到对象数组
我得到了一组如下的对象:Arrays 将数组映射到对象数组,arrays,reactjs,mapping,Arrays,Reactjs,Mapping,我得到了一组如下的对象: const defaultActors = [ { data: {name: "name1"} }, { data: {name: "name2"} } ] const actorsToBeAdded = ["nameX", "nameY"] setCombinedActors( actorsToBeAdded.map((actor)
const defaultActors =
[
{
data: {name: "name1"}
},
{
data: {name: "name2"}
}
]
const actorsToBeAdded = ["nameX", "nameY"]
setCombinedActors(
actorsToBeAdded.map((actor) =>
({
data: {name : actor} //data from [nameX, nameY] array
//also need to spread data from {name: "name1" ...} array
})
)
)
还有这样一个简单的数组:
const defaultActors =
[
{
data: {name: "name1"}
},
{
data: {name: "name2"}
}
]
const actorsToBeAdded = ["nameX", "nameY"]
setCombinedActors(
actorsToBeAdded.map((actor) =>
({
data: {name : actor} //data from [nameX, nameY] array
//also need to spread data from {name: "name1" ...} array
})
)
)
有没有一种简单的方法可以做到这一点:
const combinedActors = [
{
data: {name: "name1"}
},
{
data: {name: "name2"}
},
{
data: {name: "nameX"} //newly added
},
{
data: {name: "nameY"} //newly added
}
]
我正在使用useState
并尝试获得如下对象的组合数组:
const defaultActors =
[
{
data: {name: "name1"}
},
{
data: {name: "name2"}
}
]
const actorsToBeAdded = ["nameX", "nameY"]
setCombinedActors(
actorsToBeAdded.map((actor) =>
({
data: {name : actor} //data from [nameX, nameY] array
//also need to spread data from {name: "name1" ...} array
})
)
)
编辑:谢谢你的回答。Concat确实会生成一个数组,但它是“直接”值和对象的数组,如下所示
["name1", "name2", {Object_with_data},{Object_with_data}]
有什么方法可以到达吗
[{Object_with_data},{Object_with_data}, {Object_with_data},{Object_with_data}]
还是这个
["name1", "name2", "name3", "name4"]
??
我创建了沙盒:
感谢所有感兴趣的人
actorsToBeAdded.forEach(value=>{
defaultActors.push(
{data:{name:value}},
);
}
)
试试看。您可以使用以下方法对两个阵列进行连接:
setCombinedActors(
海螺(
map(actor=>({data:{name:actor}}))
)
)
此外,您可能希望仅添加仍不在defaultActors
数组中的参与者,为此,您可以使用如下过滤器:
setCombinedActors(
海螺(
带头人
.filter(actor=>!defaultActors.some({data}=>data.name==actor))
.map(actor=>({data:{name:actor}}))
)
)
如果要将所有内容转换为字符串,请回答编辑
arr.map(elm=>typeof elm==='string'?elm:elm.data.name)
否则,如果您想要对象
arr.map(elm=>typeof elm==='string'?{data:{name:elm}}}:elm)
注意:假设数组的所有元素都是String
或结构为{data:{name:'a String'}}
的对象,那么您就有了一个包含对象或字符串的数组,并且您只想将其设置为字符串或对象对吗?是的,这是对的,请检查编辑是否正确。只是一个提醒,不要在一篇文章中发布多个问题。