组合两个对象数组以获得所有可能的结果
Combine two arrays of objects to get all possible outcomes
我有两个对象数组:
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}
})
})
首先,您绘制出 browserCapabilities
。在 map 函数中,您还映射了 osCapabilities
和 return 对象数组以及每个浏览器的 os 信息。
您将浏览器对象与 os 对象合并,方法是将它们分散到一个新对象中。参见 spread syntax
如果您只使用 .map()
,flatMap 将展平本来是二维数组的内容,并将它们展平为一维数组。
我有两个对象数组:
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}
})
})
首先,您绘制出 browserCapabilities
。在 map 函数中,您还映射了 osCapabilities
和 return 对象数组以及每个浏览器的 os 信息。
您将浏览器对象与 os 对象合并,方法是将它们分散到一个新对象中。参见 spread syntax
如果您只使用 .map()
,flatMap 将展平本来是二维数组的内容,并将它们展平为一维数组。