dynamic-display-shared
Version:
A library for dynamic view
27 lines • 3.42 kB
JavaScript
export function groupBy(list, keyGetter) {
return list.reduce((groups, item, i, a, key = keyGetter(item)) => ((groups[key] || (groups[key] = [])).push(item), groups), {});
}
// export function groupBy(list, keyGetter) {
// const map = new Map();
// list.forEach((item) => {
// const key = keyGetter(item);
// const collection = map.get(key);
// if (!collection) {
// map.set(key, [item]);
// } else {
// collection.push(item);
// }
// });
// return map;
// }
// export const groupBy(items, key) => items.reduce(
// (result, item) => ({
// ...result,
// [item[key]]: [
// ...(result[item[key]] || []),
// item,
// ],
// }),
// {},
// );
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnkudXRpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2R5bmFtaWMtZGlzcGxheS1zaGFyZWQvc3JjL2xpYi9pbmZyYXN0cnVjdHVyZS9ncm91cC1ieS51dGlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxPQUFPLENBQUksSUFBdUIsRUFBRSxTQUFtTztJQUNyUixPQUFPLElBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuSSxDQUFDO0FBRUQsNkNBQTZDO0FBQzdDLDZCQUE2QjtBQUM3QiwrQkFBK0I7QUFDL0Isd0NBQXdDO0FBQ3hDLDRDQUE0QztBQUM1Qyw4QkFBOEI7QUFDOUIscUNBQXFDO0FBQ3JDLG9CQUFvQjtBQUNwQixzQ0FBc0M7QUFDdEMsYUFBYTtBQUNiLFVBQVU7QUFDVixrQkFBa0I7QUFDbEIsSUFBSTtBQUVKLG9EQUFvRDtBQUNwRCwyQkFBMkI7QUFDM0IscUJBQXFCO0FBQ3JCLHlCQUF5QjtBQUN6Qiw0Q0FBNEM7QUFDNUMsb0JBQW9CO0FBQ3BCLGFBQWE7QUFDYixVQUFVO0FBQ1YsVUFBVTtBQUNWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ3JvdXBCeTxUPihsaXN0OiBhbnlbXSB8IHVuZGVmaW5lZCwga2V5R2V0dGVyOiB7IChjaGFuZ2U6IHsgZ3JvdXBOdW1iZXI6IGFueTsgfSk6IGFueTsgKGRhdGE6IGFueSk6IGFueTsgKGhlYWRlcjogYW55KTogYW55OyAoY2hhcnQ6IGFueSk6IGFueTsgKGNoYXJ0OiBhbnkpOiBhbnk7IChjaGFuZ2U6IGFueSk6IGFueTsgKGNoYW5nZTogYW55KTogc3RyaW5nOyAoY2hhbmdlOiB7IGdyb3VwTnVtYmVyOiBhbnk7IH0pOiBhbnk7IChhcmcwOiBhbnkpOiBhbnk7IH0pOiBUW10ge1xyXG4gIHJldHVybiBsaXN0IS5yZWR1Y2UoKGdyb3VwcywgaXRlbSwgaSwgYSwga2V5ID0ga2V5R2V0dGVyKGl0ZW0pKSA9PiAoKGdyb3Vwc1trZXldIHx8IChncm91cHNba2V5XSA9IFtdKSkucHVzaChpdGVtKSwgZ3JvdXBzKSwge30pO1xyXG59XHJcblxyXG4vLyBleHBvcnQgZnVuY3Rpb24gZ3JvdXBCeShsaXN0LCBrZXlHZXR0ZXIpIHtcclxuLy8gICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAoKTtcclxuLy8gICAgIGxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4vLyAgICAgICAgICBjb25zdCBrZXkgPSBrZXlHZXR0ZXIoaXRlbSk7XHJcbi8vICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBtYXAuZ2V0KGtleSk7XHJcbi8vICAgICAgICAgIGlmICghY29sbGVjdGlvbikge1xyXG4vLyAgICAgICAgICAgICAgbWFwLnNldChrZXksIFtpdGVtXSk7XHJcbi8vICAgICAgICAgIH0gZWxzZSB7XHJcbi8vICAgICAgICAgICAgICBjb2xsZWN0aW9uLnB1c2goaXRlbSk7XHJcbi8vICAgICAgICAgIH1cclxuLy8gICAgIH0pO1xyXG4vLyAgICAgcmV0dXJuIG1hcDtcclxuLy8gfVxyXG5cclxuLy8gZXhwb3J0IGNvbnN0IGdyb3VwQnkoaXRlbXMsIGtleSkgPT4gaXRlbXMucmVkdWNlKFxyXG4vLyAgICAgKHJlc3VsdCwgaXRlbSkgPT4gKHtcclxuLy8gICAgICAgICAuLi5yZXN1bHQsXHJcbi8vICAgICAgICAgW2l0ZW1ba2V5XV06IFtcclxuLy8gICAgICAgICAgICAgLi4uKHJlc3VsdFtpdGVtW2tleV1dIHx8IFtdKSxcclxuLy8gICAgICAgICAgICAgaXRlbSxcclxuLy8gICAgICAgICBdLFxyXG4vLyAgICAgfSksXHJcbi8vICAgICB7fSxcclxuLy8gKTtcclxuIl19