首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将嵌套数组的对象转换为平面对象数组?

如何将嵌套数组的对象转换为平面对象数组?
EN

Stack Overflow用户
提问于 2021-04-27 10:56:26
回答 2查看 67关注 0票数 0

我有一系列选项的对象。在每个选项上,我都需要创建平面对象。就像这样

代码语言:javascript
复制
name: 'win10',
        architectures: ['x64', 'x86'],
        languages: ['en', 'ru'],

转化为:

代码语言:javascript
复制
[
{ name: 'win10',
        architectures 'x64',
        languages: 'en',
}, {
name: 'win10',
        architectures:  'x86',
        languages: 'ru',
}, {
name: 'win10',
        architectures: 'x64',
        languages: 'en',
}, {
name: 'win10',
        architectures: 'x86',
        languages: 'ru',
}
]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-27 11:08:21

这应该可以做到:

代码语言:javascript
复制
let input = {
        name: 'win10',
        architectures: ['x64', 'x86'],
        languages: ['en', 'ru']
};

function flatten(system) {
        let output = [];

        for (let i = 0; i < system.architectures.length; i++) {
                const arch = system.architectures[i];
                for (let j = 0; j < system.languages.length; j++) {
                        const lang = system.languages[j];
                        output = [...output, {
                                name: system.name,
                                architectures: arch,
                                language: lang
                        }];
                }
        }
        return output;
}

const output = flatten(input);

console.log(output);
票数 1
EN

Stack Overflow用户

发布于 2021-04-27 11:16:35

这是另一种方法

代码语言:javascript
复制
var x = { name: 'win10',
        architectures: ['x64', 'x86'],
        languages: ['en', 'ru'] }
var k = [];
 x.architectures.forEach(p => {
 x.languages.forEach((y => {
    k.push({name: x.name, architectures:p,languages:y})
  }))
})

console.log(k)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67281706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档