javascript — сортировка свойства объекта по значениям

Машинопись

Следующая функция сортирует объект по значению или по свойству значения. Если вы не используете TypeScript, вы можете удалить информацию о типе, чтобы преобразовать ее в JavaScript.

/** * Represents an associative array of a same type. */ interface Dictionary{amp}lt;T{amp}gt; { [key: string]: T; } /** * Sorts an object (dictionary) by value or property of value and returns * the sorted result as a Map object to preserve the sort order. */ function sort{amp}lt;TValue{amp}gt;( obj: Dictionary{amp}lt;TValue{amp}gt;, valSelector: (val: TValue) ={amp}gt; number | string, ) { const sortedEntries = Object.entries(obj) .sort((a, b) ={amp}gt; valSelector(a[1]) {amp}gt; valSelector(b[1]) ? 1 : valSelector(a[1]) {amp}lt; valSelector(b[1]) ? -1 : 0); return new Map(sortedEntries); } 

использование

 var list = { "one": { height: 100, weight: 15 }, "two": { height: 75, weight: 12 }, "three": { height: 116, weight: 9 }, "four": { height: 15, weight: 10 }, }; var sortedMap = sort(list, val ={amp}gt; val.height); 

Порядок ключей в объекте JavaScript не гарантируется, поэтому я сортирую и возвращаю результат в виде объекта Map, который сохраняет порядок сортировки.

Если вы хотите преобразовать его обратно в объект, вы можете сделать это:

 var sortedObj = {} as any; sortedMap.forEach((v,k) ={amp}gt; { sortedObj[k] = v }); 

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector