js 比较两个数组,并进行替换掉?
js 比较两个数组,并进行替换掉?
let arr = [
{
sk: [
{ Name: '数据1', Value: '200' },
{ Name: '数据2', Value: '300' },
{ Name: '数据3', Value: '400' },
],
},
{
sk: [
{ Name: '数据5', Value: '500' },
{ Name: '数据6', Value: '600' },
{ Name: '数据7', Value: '700' },
],
},
];
let arr2 = {
name: '数据555',
val: [200, 300, 500],
};
需要根据arr2对象里面的val数组里面的值[200, 300, 500]去匹配arr1数组下sk数组里面的Value的值,如果arr1数组下sk数组里面的Value的值和arr2对象里面的val数组里面的值相等就替换Name,把arr2 对象的name 赋值到sk数组里面的Name
期望得到
let arr = [
{
sk: [
{ Name: '数据555', Value: '200' },
{ Name: '数据555', Value: '300' },
{ Name: '数据3', Value: '400' },
],
},
{
sk: [
{ Name: '数据555', Value: '200' },
{ Name: '数据555', Value: '500' },
{ Name: '数据7', Value: '700' },
],
},
];
let result = arr.map((item) => {
if (item.sk.length == 0) return;
item.sk.forEach((k) => {
return {
Name: arr2.val.find((t) => t == k.Value)?.name,
};
});
return item;
});
这样写了调试了还没效果。麻烦大佬们帮我看看
回复
1个回答
test
2024-06-23
let result = arr.map((item) => {
if (item.sk.length === 0) return;
item.sk.forEach((k) => {
if (arr2.val.includes(Number(k.Value))) {
k.Name = arr2.name
}
});
return item;
});
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容