Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用第二个数组中的匹配属性替换一个数组中的值_Javascript - Fatal编程技术网

Javascript 用第二个数组中的匹配属性替换一个数组中的值

Javascript 用第二个数组中的匹配属性替换一个数组中的值,javascript,Javascript,我有两个阵列: arrayOne = ["green","blue","purple"] 及 我希望返回数组是[1,8,9],在数组two的末尾将“purple”作为一个对象推送(使用新id) 最有效的方法是什么?下面的代码使用map来检索第二个数组中元素的id,或者,如果该元素不存在,则通过将该数组中最后一个id增加1来创建一个新的元素 arrayOne=[“绿色”、“蓝色”、“紫色”] 阵列双=[ {姓名:“绿色”,id:1}, {姓名:“红色”,id:2}, {姓名:“黄色”,id:3

我有两个阵列:

arrayOne = ["green","blue","purple"]

我希望返回数组是
[1,8,9]
,在
数组two
的末尾将“purple”作为一个对象推送(使用新id)


最有效的方法是什么?

下面的代码使用
map
来检索第二个数组中元素的
id
,或者,如果该元素不存在,则通过将该数组中最后一个
id
增加1来创建一个新的元素

arrayOne=[“绿色”、“蓝色”、“紫色”]
阵列双=[
{姓名:“绿色”,id:1},
{姓名:“红色”,id:2},
{姓名:“黄色”,id:3},
{姓名:“蓝色”,id:8},
]
const newArr=arrayOne.map(颜色=>{
const found=arrayTwo.find(el=>el.name==color);
如果(找到){
返回find.id;
}
const newId=arrayTwo[arrayTwo.length-1].id+1;
push({name:color,id:newId});
返回newId;
});
控制台日志(newArr);

控制台日志(arrayTwo)
以下代码使用
map
检索第二个数组中元素的
id
,或者,如果该元素不存在,则通过将该数组中最后一个
id
增加1来创建一个新元素

arrayOne=[“绿色”、“蓝色”、“紫色”]
阵列双=[
{姓名:“绿色”,id:1},
{姓名:“红色”,id:2},
{姓名:“黄色”,id:3},
{姓名:“蓝色”,id:8},
]
const newArr=arrayOne.map(颜色=>{
const found=arrayTwo.find(el=>el.name==color);
如果(找到){
返回find.id;
}
const newId=arrayTwo[arrayTwo.length-1].id+1;
push({name:color,id:newId});
返回newId;
});
控制台日志(newArr);

控制台日志(arrayTwo)
您可以将
arrayTwo
转换为
映射
(为了效率),其中
名称
是键,
id
是值。然后,一旦完成此操作,就可以使用每个名称元素作为查找键,将
.map()
arrayOne
放入
id
的数组中,以获取其关联的id。如果发现
名称
不在
map
中,则可以向
arrayTwo
数组中添加一个新对象,并增加
id
计数器:

const arrayOne=[“绿色”、“蓝色”、“紫色”];
const arrayTwo=[{name:“绿色”,id:1},{name:“红色”,id:2},{name:“黄色”,id:3},{name:“蓝色”,id:8},];
let[{id:l_id}]=arrayTwo.slice(-1);
constlut=newmap(arrayTwo.Map({name,id})=>[name,id]);
const res=arrayOne.map(name=>lut.get(name)| |(arrayTwo.push({name,id:++l_id}),l_id));
控制台日志(res);

控制台日志(arrayTwo)
您可以将
arrayTwo
转换为
映射
(为了效率),其中
名称
是键,
id
是值。然后,一旦完成此操作,就可以使用每个名称元素作为查找键,将
.map()
arrayOne
放入
id
的数组中,以获取其关联的id。如果发现
名称
不在
map
中,则可以向
arrayTwo
数组中添加一个新对象,并增加
id
计数器:

const arrayOne=[“绿色”、“蓝色”、“紫色”];
const arrayTwo=[{name:“绿色”,id:1},{name:“红色”,id:2},{name:“黄色”,id:3},{name:“蓝色”,id:8},];
let[{id:l_id}]=arrayTwo.slice(-1);
constlut=newmap(arrayTwo.Map({name,id})=>[name,id]);
const res=arrayOne.map(name=>lut.get(name)| |(arrayTwo.push({name,id:++l_id}),l_id));
控制台日志(res);

控制台日志(arrayTwo)此代码可以实现您想要的:

让数组two=[
{姓名:“绿色”,id:1},
{姓名:“红色”,id:2},
{姓名:“黄色”,id:3},
{姓名:“蓝色”,id:8},
];
让索引={},lastId=0;
arrayTwo.forEach({name,id})=>{
如果(索引[name]=id,id>lastId)lastId=id
});
函数getResult(a){
返回a.map(e=>index[e]| |(arrayTwo.push({name:e,id:++lastId}),index[e]=lastId))
}
//数组内容
let result=getResult([“绿色”、“蓝色”、“紫色”);
console.log(arrayTwo,result);
//与其他数据
让result2=getResult([“青色”、“蓝色”、“紫色”、“天蓝”);

console.log(arrayTwo,result2)此代码可以实现您想要的:

让数组two=[
{姓名:“绿色”,id:1},
{姓名:“红色”,id:2},
{姓名:“黄色”,id:3},
{姓名:“蓝色”,id:8},
];
让索引={},lastId=0;
arrayTwo.forEach({name,id})=>{
如果(索引[name]=id,id>lastId)lastId=id
});
函数getResult(a){
返回a.map(e=>index[e]| |(arrayTwo.push({name:e,id:++lastId}),index[e]=lastId))
}
//数组内容
let result=getResult([“绿色”、“蓝色”、“紫色”);
console.log(arrayTwo,result);
//与其他数据
让result2=getResult([“青色”、“蓝色”、“紫色”、“天蓝”);

console.log(arrayTwo,result2)
9是紫色的id吗?将数组转换成哈希映射,其中键是name,值是id,然后执行操作将需要O(n)个
id
s在
arrayTwo
上排序吗?@Eddie让我们假设它们是。@StevenB。紫色没有id(还没有),它不存在于
arrayTwo
9是紫色的id吗?将数组转换成哈希映射,其中键是name,值是id,然后执行操作需要O(n)是
id
arrayTwo
上排序吗?@Eddie让我们假设它们是。@StevenB。紫色没有id(尚未),它不存在于
arrayTwo
中。请注意,假设
arrayTwo
中的最后一项包含最高的
id
可能很脆弱。在这种情况下,您总是可以找到max ID.props,以了解OP的期望值,也可以找到这样一个详细的回复NickNote,即假设
数组中的最后一项包含最高的
ID
,这可能很脆弱。在这种情况下,您总是可以找到max ID.props来计算出
arrayTwo = [
  { name: "green", id: 1 },
  { name: "red", id: 2 },
  { name: "yellow", id: 3 },
  { name: "blue", id: 8 },
]