javascript - 组合两个对象数组以获得所有可能的结果

标签 javascript typescript ecmascript-6 ecmascript-2016

我有两个对象数组:

    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.mapArray.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/

相关文章:

javascript - Node-Red 多重上下文

javascript - Node JS 类实例化预期行为

javascript - 返回内部 if else 并使用粗箭头

javascript - 如何在括号中编写 TypeScript 和 CoffeeScript?

javascript - AngularJS - 如何传递最新的 $routeParams 来解析?

typescript - Angular 2 : Unable to retrieve list from array in Tour of Heroes tutorial

typescript - 当我知道 `this` 是动态的时,我可以强制将经典函数作为参数而不是 Typescript 的箭头函数吗?

typescript - 如何使用 Nest cli 创建我自己的原理图

javascript - 是否可以包含取决于用户是否安装了某个软件包的功能(可选功能)

javascript - 为 div 可见性使用过渡