我有两个对象数组:
const osCapabilities = [{
os: 'Windows',
os_version: '10',
}, {
os: 'OS X',
os_version: 'Mojave',
}];
const browserCapabilities = [{
browser: 'chrome'
}, {
browser: 'firefox'
}, {
browser: 'internet explorer'
}, {
browser: 'safari'
}];
我正在尝试找出组合它们的最佳方法,以便我可以获得以下结果。
const capabilities = [{
browser: 'chrome',
os: 'Windows',
os_version: '10',
}, {
browser: 'chrome',
os: 'OS X',
os_version: 'Mojave',
}, {
browser: 'firefox',
os: 'Windows',
os_version: '10',
}, {
browser: 'firefox',
os: 'OS X',
os_version: 'Mojave',
} ...
]
我不知道如何才能做到这一点。任何帮助是极大的赞赏。谢谢!v
最佳答案
您可以使用Array.prototype.map
和Array.prototype.flatMap()来做到这一点
var merged = browserCapabilities.flatMap(browser => {
return osCapabilities.map(os => {
return {...browser, ...os}
})
})
首先,规划出browserCapability
。在映射函数中,您还可以映射 osCapability
并返回包含每个浏览器的操作系统信息的对象数组。
通过将浏览器对象与操作系统对象展开到一个新对象中,将它们组合起来。请参阅spread syntax
然后,如果您仅使用 .map()
,则 flatMap 会将二维数组展平,并将其展平为一维数组。
关于javascript - 组合两个对象数组以获得所有可能的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57511789/