Javascript将对象中的所有值展开

3

我有一个包含数组值的对象,例如:

const CHANNELS = {
    FACEBOOK: [{
            value: 'face1',
            label: 'Facebook Account'
        },{
            value: 'face1',
            label: 'Facebook Group'
        },
    ],
    LINKEDIN: [{
            value: '',
            label: 'All'
        }, {
            value: 'english',
            label: 'English'
        }, {
            value: 'korean',
            label: 'Korean'
        }
    ],
    YOUTUBE: [{
            value: 'youtube1',
            label: 'Youtube channel'
        }, {
            value: 'youtube2',
            label: 'Youtube'
        }
    ]
};

我想从这个数组中获取所有键的值。 因此,我的期望输出数组如下:
const array = [{
            value: 'face1',
            label: 'Facebook Account'
        }, {
            value: 'face1',
            label: 'Facebook Group'
        }, {
            value: '',
            label: 'All'
        }, {
            value: 'english',
            label: 'English'
        }, {
            value: 'korean',
            label: 'Korean'
        }, {
            value: 'youtube1',
            label: 'Youtube channel'
        }, {
            value: 'youtube2',
            label: 'Youtube'
        }
]

谢谢


顺便说一下,我已经删除了你的“在线代码内联链接”,因为它只是指向Stackoverflow首页的链接 ;) - 0stone0
3个回答

6

首先,使用 Object.values() 方法获取对象的值

然后使用 flat() 将其展开成一个单一的数组

const CHANNELS = {
    FACEBOOK: [{value: 'face1', label: 'Facebook Account'},{value: 'face1', label: 'Facebook Group'}, ],
    LINKEDIN: [{value: '', label: 'All'}, {value: 'english', label: 'English'}, {value: 'korean', label: 'Korean'} ],
    YOUTUBE: [{value: 'youtube1', label: 'Youtube channel'}, {value: 'youtube2', label: 'Youtube'} ]
};

const res = Object.values(CHANNELS).flat();
console.log(res)


3

请尝试以下方法:

let arr = [];

for (const key in CHANNELS) {
  for (const iterator of CHANNELS[key]) {
    arr.push(iterator);
  }
}

console.log(arr);


1

const CHANNELS = {
    FACEBOOK: [{
            value: 'face1',
            label: 'Facebook Account'
        },{
            value: 'face1',
            label: 'Facebook Group'
        },
    ],
    LINKEDIN: [{
            value: '',
            label: 'All'
        }, {
            value: 'english',
            label: 'English'
        }, {
            value: 'korean',
            label: 'Korean'
        }
    ],
    YOUTUBE: [{
            value: 'youtube1',
            label: 'Youtube channel'
        }, {
            value: 'youtube2',
            label: 'Youtube'
        }
    ]
};

let a = []
let brand = ["FACEBOOK","LINKEDIN","YOUTUBE"]

for (j=0;j<brand.length;j++){
  for (var i = 0; i < CHANNELS[brand[j]].length; i++) {
    }
       a.push(CHANNELS[brand[j]])
        
}  
console.log(a)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接