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)。类似于:
[“刺痛”、“怒目而视”、“安杜里尔”、“刺痛”、“安杜里尔”…]