Javascript 将键值对(数组中的值)添加到数组中的特定对象
我有一个对象数组:Javascript 将键值对(数组中的值)添加到数组中的特定对象,javascript,arrays,reactjs,javascript-objects,Javascript,Arrays,Reactjs,Javascript Objects,我有一个对象数组: chachters = [{name: "Frodo", race: "hobitt", age: 111}, {name: "Gandalf", race: "human", age: 2019}], {name: "Aragorn", race: "elf", age: 40}]; 和一个字符串数组 swords = ["Sting","Glamdring","Anduril"]; 我想在“字符”中的对象中添加一个
chachters = [{name: "Frodo", race: "hobitt", age: 111},
{name: "Gandalf", race: "human", age: 2019}],
{name: "Aragorn", race: "elf", age: 40}];
和一个字符串数组
swords = ["Sting","Glamdring","Anduril"];
我想在“字符”中的对象中添加一个键值对,以便将正确的剑分配给正确的字符。索引匹配,其中刀剑[0]需要添加到charachrers[0]中的值:
以下是我希望角色的样子:
chachters =[{name:"Frodo", race:"hobitt", age:111,sword:"Sting"},
{name:"Gandalf",race:"human",age:2019,sword:"Glamdring"}],
{name:"Aragorn",race:"elf",age:40,sword:"Anduril"}];
请帮忙。中土世界的信仰取决于此。使用#array.forEach,并为数组中的每个对象添加额外的键和剑数组中的值
工作代码段(这样,它将直接在原始数组中进行更改):
让chachters=[
{姓名:“佛罗多”,种族:“霍比特”,年龄:111},
{姓名:“甘道夫”,种族:“人类”,年龄:2019},
{姓名:“阿拉贡”,种族:“精灵”,年龄:40}];
让剑=[“刺痛”,“闪耀”,“安杜里尔];
chachters.forEach((el,i)=>{
剑=剑;
})
log('chachters=',chachters)代码>您可以使用映射
和对象。分配
:
var chachters=[{姓名:“佛罗多”,种族:“霍比特”,年龄:111},
{姓名:“甘道夫”,种族:“人类”,年龄:2019},
{姓名:“阿拉贡”,种族:“精灵”,年龄:40}],
剑=[“刺”、“闪耀”、“安杜里尔”];
var result=chachters.map((obj,i)=>Object.assign({swar:swarks[i]},obj));
控制台日志(结果)
您可以使用数组#映射
和扩展语法
。根据索引向角色添加剑
const chachters=[{姓名:“佛罗多”,种族:“霍比特”,年龄:111},{姓名:“甘道夫”,种族:“人类”,年龄:2019},{姓名:“阿拉贡”,种族:“精灵”,年龄:40}],
剑=[“刺”、“闪耀”、“安杜里尔”],
结果=chachters.map((o,i)=>({…o,剑:剑[i]}));
控制台日志(结果)代码>您可以创建一个函数,将字符串数组附加到对象数组中
例如:
此函数用于将字符串数组附加到对象数组
function appendObjTo(swords, chachters ) {
return Object.freeze(swords.concat(chachters ));
}
根据您的定义:
swords = ["Sting","Glamdring","Anduril"];
const chachters = [{name: "Frodo", race: "hobitt", age: 111},
{name: "Gandalf", race: "human", age: 2019},
{name: "Aragorn", race: "elf", age: 40}];
const newChachters = appendObjTo(swords, chachters);
请允许我试一试。我不太熟悉.map():P
var字符=[
{姓名:“佛罗多”,种族:“霍比特”,年龄:111},
{姓名:“甘道夫”,种族:“人类”,年龄:2019},
{姓名:“阿拉贡”,种族:“精灵”,年龄:40}
];
var剑=[“刺”、“闪耀”、“安杜里尔”];
var characterswithbrows=characters.map(函数(字符,索引){
character.swarks=剑[索引];
返回字符;
});
console.log(characterswithswowers)代码>很多人已经回答了如何做你要求的事情,所以我不会这么做。但是,与其将剑复制到角色对象中,不如将其作为单独的剑对象集合保留,并让当前的剑持有者只存储剑的索引引用,这样做是否有益?剑会改变主人吗?你的方法看起来像是一次性的数据整理,而不是一种理想的方法来存储两个单独的列表,它们实际上有一对一的关系。我同意@Raith。如果按您现在的方式执行,那么假设您的chachters
数组包含100个对象,那么sworks
也将有100个字符串,其中包含重复的字符串(因为从逻辑上讲,您不会有100种不同类型的sworks)。类似于:[“刺痛”、“怒目而视”、“安杜里尔”、“刺痛”、“安杜里尔”…]