簡體   English   中英

如何根據對象的值對對象數組進行分組排序?

[英]How grouped sort array of objects based on object's value?

我有這樣的對象數組:

var points = [{a: 4, b: 3, c:'parent'}, {a: 1, b:5, c:'child'}, {a: 5, b: 2, c:'child'}, {a: 1, b: 2, c:'parent'}, {a: 3, b: 1, c:'child'}];

我需要根據“a”對象的值對其進行排序。 但問題是,如果它具有“c”對象的值“parent”,那么“c”對象的值“child”應該是下一個 object 並且不應該被排序。

最后我希望有這個排序的點數組:

var sortedPoints = [{a: 1, b: 2, c:'parent'}, {a: 3, b: 1, c:'child'} ,{a: 4, b: 3, c:'parent'}, {a: 1, b:5, c:'child'}, {a: 5, b: 2, c:'child'}];

您需要對父母和孩子進行分組,排序並獲得一個平面數組。

 var points = [{ a: 4, b: 3, c: 'parent' }, { a: 1, b: 5, c: 'child' }, { a: 5, b: 2, c: 'child' }, { a: 1, b: 2, c: 'parent' }, { a: 3, b: 1, c: 'child' }], sorted = points.reduce((r, o) => { if (o.c === 'parent') r.push([o]); else r[r.length - 1].push(o); return r; }, []).sort(([{ a }], [{ a: b }]) => a - b).flat(); console.log(sorted);
 .as-console-wrapper { max-height: 100%;important: top; 0; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM