2 回答

TA貢獻1803條經驗 獲得超3個贊
您可以將對象與同一組的對象分組。
const
objects = [{ name: 'name1', url: 'name1.com', country: 'IT' }, { name: 'name2', url: 'name2.com', country: 'IT' }, { name: 'name3', url: 'name3.com', country: 'IT' }, { name: 'name4', url: 'name4.com', country: 'IT' }, { name: 'name5', url: 'name5.com', country: 'IT' }, { name: 'name6', url: 'name6.com', country: 'CN' }, { name: 'name7', url: 'name7.com', country: 'CN' }, { name: 'name8', url: 'name8.com', country: 'CN' }, { name: 'name9', url: 'name9.com', country: 'AL' }, { name: 'name10', url: 'name10.com', country: 'CZ' }, { name: 'name11', url: 'name11.com', country: 'CZ' }, { name: 'name12', url: 'name12.com', country: 'GB' }, { name: 'name13', url: 'name13.com', country: 'GB' }, { name: 'name14', url: 'name14.com', country: 'GB' }, { name: 'name15', url: 'name15.com', country: 'GB' }, { name: 'name16', url: 'name16.com', country: 'TR' }, { name: 'name17', url: 'name17.com', country: 'MN' }],
grouped = Object.values(objects.reduce((r, o) => {
(r[o.country] ??= []).push(o);
return r;
}, {}));
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }
通過按 排序數據country,或者至少將所有相同的國家/地區分組在一起,您可以檢查前一個國家/地區并創建一個新組。
const
objects = [{ name: 'name1', url: 'name1.com', country: 'IT' }, { name: 'name2', url: 'name2.com', country: 'IT' }, { name: 'name3', url: 'name3.com', country: 'IT' }, { name: 'name4', url: 'name4.com', country: 'IT' }, { name: 'name5', url: 'name5.com', country: 'IT' }, { name: 'name6', url: 'name6.com', country: 'CN' }, { name: 'name7', url: 'name7.com', country: 'CN' }, { name: 'name8', url: 'name8.com', country: 'CN' }, { name: 'name9', url: 'name9.com', country: 'AL' }, { name: 'name10', url: 'name10.com', country: 'CZ' }, { name: 'name11', url: 'name11.com', country: 'CZ' }, { name: 'name12', url: 'name12.com', country: 'GB' }, { name: 'name13', url: 'name13.com', country: 'GB' }, { name: 'name14', url: 'name14.com', country: 'GB' }, { name: 'name15', url: 'name15.com', country: 'GB' }, { name: 'name16', url: 'name16.com', country: 'TR' }, { name: 'name17', url: 'name17.com', country: 'MN' }],
grouped = objects.reduce((r, o, i, a) => {
if (!i || a[i -1].country !== o.country) r.push([]);
r[r.length - 1].push(o);
return r;
}, []);
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }

TA貢獻1712條經驗 獲得超3個贊
您可以使用Map 對象按國家/地區對數據進行分組。
const objects = [
? { name: 'name1', url: 'name1.com', country: 'IT' },
? { name: 'name2', url: 'name2.com', country: 'IT' },
? { name: 'name3', url: 'name3.com', country: 'IT' },
? { name: 'name4', url: 'name4.com', country: 'IT' },
? { name: 'name5', url: 'name5.com', country: 'IT' },
? { name: 'name6', url: 'name6.com', country: 'CN' },
? { name: 'name7', url: 'name7.com', country: 'CN' },
? { name: 'name8', url: 'name8.com', country: 'CN' },
? { name: 'name9', url: 'name9.com', country: 'AL' },
? { name: 'name10', url: 'name10.com', country: 'CZ' },
? { name: 'name11', url: 'name11.com', country: 'CZ' },
? { name: 'name12', url: 'name12.com', country: 'GB' },
? { name: 'name13', url: 'name13.com', country: 'GB' },
? { name: 'name14', url: 'name14.com', country: 'GB' },
? { name: 'name15', url: 'name15.com', country: 'GB' },
? { name: 'name16', url: 'name16.com', country: 'TR' },
? { name: 'name17', url: 'name17.com', country: 'MN' },
];
const map = new Map();
objects.forEach((x) => {
? const key = x.country;
? if (map.has(key)) map.set(key, [...map.get(key), x]);
? else map.set(key, [x]);
});
const ret = [...map.values()];
console.log(ret);
添加回答
舉報