我有一个具有相同名称的多个对象的数组。如何根据名称分隔数组?
我试过用地图,过滤器,但没有工作,最后我用的也减少,但没有得到输出。
const result = Object.values(this.optionsArr.reduce((a, c) => {
a[c.name] = a[c.name] || {name: c.name};
a[c.name].options.push(c.options);
return a;
}, {})).map(item => ({...item, accessDetails: Object.values(item.accessDetails)}));输入:
[
{name: "audio", options: [
{name:'true', value: 'T'},
{name:'false', value: 'F'},
{name:'yes', value: 'Y'}]
},
{name: "video", options: [
{name:'true', value: 'T'},
{name:'false', value: 'F'},
{name:'yes', value: 'Y'}]
},
{name: "call", options: [
{name:'true', value: 'T'},
{name:'false', value: 'F'},
{name:'yes', value: 'Y'}]
}]预期产出:
const arr = [{name: "audio", options:{name:'true', value: 'T'}},
{name: "audio", options:{name:'false', value: 'F'}},
{name: "audio", options:{name:'yes', value: 'Y'}},
{name: "video", options:{name:'true', value: 'T'}},
{name: "video", options:{name:'yes', value: 'Y'}},
{name: "video", options:{name:'false', value: 'F'}},
{name: "call", options:{name:'true', value: 'T'}},
{name: "call", options:{name:'No', value: 'N'}},
{name: "call", options:{name:'false', value: 'F'}}];发布于 2020-09-11 17:12:27
你应该用地图来转换数组,
arr = arr.map((element) => {
const temp = [];
element.options.forEach(option => {
temp.push({
name: element.name,
options: option
});
})
return temp;
}).flat();https://stackoverflow.com/questions/63851419
复制相似问题