3 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
這使用Array.prototype.reduce和Array.prototype.forEach
{
? const data = [
? ? {
? ? ? ? "name": "Apple",
? ? ? ? "tags": ["fruits"]
? ? },
? ? {
? ? ? ? "name": "Orange",
? ? ? ? "tags": ["fruits"]
? ? },
? ? {
? ? ? ? "name": "Tomato",
? ? ? ? "tags": ["fruits", "vegetables"]
? ? }
? ]
?
? const groupedData = data.reduce((carry, element) => {
? ? element.tags.forEach(tag => {
? ? ? carry[tag] = carry[tag] || []
? ? ? carry[tag].push({...element})
? ? })
? ? return carry;?
? }, {})
??
? console.log(groupedData)
}

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊
這里:
let arr = [
{
"name": "Apple",
"tags": ["fruits"]
},
{
"name": "Orange",
"tags": ["fruits"]
},
{
"name": "Tomato",
"tags": ["fruits", "vegetables"]
}
];
let response = {};
for(let i of arr){
for(let j of i.tags){
let tags =[...i.tags]
if(response[j]){
response[j].push({...i , tags: tags})
} else{
response[j] = [{...i, tags: tags}];
}
}
}
console.log(response)

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊
輸入數(shù)據(jù):
const data = [
{
"name": "Apple",
"tags": ["fruits"]
},
{
"name": "Orange",
"tags": ["fruits"]
},
{
"name": "Tomato",
"tags": ["fruits", "vegetables"]
}
];
const convertData = data.reduce((target, currentElem) => {
currentElem.tags.forEach(tag => {
target[tag] ? target[tag].push({...currentElem}) : target[tag] = [{...currentElem}];
});
return target;
}, {});
console.log(convertData);
添加回答
舉報(bào)