javascript - 将具有不同对象类型的两个不同数组合并为一个
问题描述
我想将两个具有不同对象类型的不同数组合并为一个。
假设我有一个数组:
var column = [
{
"href": "./?course=13&sort=firstname&silast=all&sifirst=all",
"title": null
},
{
"href": undefined,
"title": undefined
},
{
"href": "http://someurl.edu.lk/mod/questionnaire/view.php?id=304",
"title": "Survey on student familiarity with the online learning platform"
},
{
"href": "http://someurl.edu.lk/mod/assign/view.php?id=307",
"title": "update your profile"
}
]
另一个数组为:
var obj = [
{
name: "POD DLK",
profile: "http://someurl.edu.lk/user/view.php?id=217&course=103"
},
{
name: "BGC DO",
profile: "http://someurl.edu.lk/user/view.php?id=218&course=103"
},
{
name: "CAD SG",
profile: "http://someurl.edu.lk/user/view.php?id=219&course=103"
},
{
name: "BON DTH",
profile: "http://someurl.edu.lk/user/view.php?id=207&course=103"
}
]
我试过一个使用:
const mergedArray = [ ...column, ...obj]
console.log(mergedArray)
但这在mergeArray中创建了一个单独的对象。
但是,我想将第一个对象从obj合并到column中的第一个对象。
预期输出:
[{
href: "./?course=13&sort=firstname&silast=all&sifirst=all",
title: null,
name: "POD DLK",
profile: "http://someurl.edu.lk/user/view.php?id=217&course=103"
}, {
href: undefined,
title: undefined,
name: "BGC DO",
profile: "http://someurl.edu.lk/user/view.php?id=218&course=103"
}, {
href: "http://someurl.edu.lk/mod/questionnaire/view.php?id=304",
title: "Survey on student familiarity with the online learning platform",
name: "CAD SG",
profile: "http://someurl.edu.lk/user/view.php?id=219&course=103"
}, {
href: "http://someurl.edu.lk/mod/assign/view.php?id=307",
title: "update your profile",
name: "BON DTH",
profile: "http://someurl.edu.lk/user/view.php?id=207&course=103"
}]
解决方案
您需要按相同的索引合并。
const
column = [{ href: "./?course=13&sort=firstname&silast=all&sifirst=all", title: null }, { href: undefined, title: undefined }, { href: "http://someurl.edu.lk/mod/questionnaire/view.php?id=304", title: "Survey on student familiarity with the online learning platform" }, { href: "http://someurl.edu.lk/mod/assign/view.php?id=307", title: "update your profile" }],
obj = [{ name: "POD DLK", profile: "http://someurl.edu.lk/user/view.php?id=217&course=103" }, { name: "BGC DO", profile: "http://someurl.edu.lk/user/view.php?id=218&course=103" }, { name: "CAD SG", profile: "http://someurl.edu.lk/user/view.php?id=219&course=103" }, { name: "BON DTH", profile: "http://someurl.edu.lk/user/view.php?id=207&course=103" }],
result = column.map((o, i) => ({ ...o, ...obj[i] }));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
与 reduce 完全不同的方法
const
column = [{ href: "./?course=13&sort=firstname&silast=all&sifirst=all", title: null }, { href: undefined, title: undefined }, { href: "http://someurl.edu.lk/mod/questionnaire/view.php?id=304", title: "Survey on student familiarity with the online learning platform" }, { href: "http://someurl.edu.lk/mod/assign/view.php?id=307", title: "update your profile" }],
obj = [{ name: "POD DLK", profile: "http://someurl.edu.lk/user/view.php?id=217&course=103" }, { name: "BGC DO", profile: "http://someurl.edu.lk/user/view.php?id=218&course=103" }, { name: "CAD SG", profile: "http://someurl.edu.lk/user/view.php?id=219&course=103" }, { name: "BON DTH", profile: "http://someurl.edu.lk/user/view.php?id=207&course=103" }],
result = [column, obj].reduce((r, a) => a.map((o, i) => ({ ...r[i], ...o })), []);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- javascript - 使用 JQuery 从外部文件加载 div
- notifications - 如何在产品页面上显示通知 [PRESTASHOP 1.7]
- python - 获取 spinbox 的价值并打印它?
- python - 如何在 Python 中搜索二维数组中的元素
- amazon-web-services - Terraform 0.12 问题。此对象没有名为“xyz”的属性
- sql - 简单的递归 SQL 查询
- ios - iOS MDM 配置文件是公开的吗?
- javascript - 向电报机器人发送消息
- javascript - 如何在 chrome devtools 中隐藏源代码?
- javascript - 如果在 Select Dropdown 插件上添加了类,则按钮事件不起作用