[英]How to order an object in JavaScript with unknown property
我需要創建按值排序的動態對象,但我不知道該屬性的名稱,我嘗試使用_.sortby
但由於我不知道該屬性而無法正常工作
初始對象:
{
134:0,
135:1,
136:2,
137:3,
138:4,
139:5,
140:15,
141:16,
142:17,
143:18,
144:19,
145:6,
146:7,
147:11,
148:12,
149:13,
150:14,
470:10,
471:20,
768:8,
769:9,
770:21,
771:22,
772:23,
773:24,
774:25
}
最終對象必須是這樣的:
{
134:0,
135:1,
136:2,
137:3,
138:4,
139:5,
145:6,
146:7,
768:8,
769:9,
470:10,
147:11,
148:12,
149:13,
150:14,
140:15,
141:16,
142:17,
143:18,
144:19,
471:20,
770:21,
771:22,
772:23,
773:24,
774:25
}
您可能需要對對象鍵進行排序,然后將它們映射到它們的值:
var obj={134:0 135:1 136:2 137:3 138:4 139:5 140:15 141:16 142:17};
獲取按鍵排序的值:
console.log(Object.keys(obj).sort().map(key=>obj[key]));//[0,1,2,3,4,5,15,16,17]
請注意,您不能對對象鍵進行排序 。 那就是為什么上面的代碼返回一個數組。
創建一個數組,其索引是對象屬性值,而值是屬性名稱。 然后,此數組的順序將是結果中所需屬性的順序。
var object = { 134:0, 135:1, 136:2, 137:3, 138:4, 139:5, 140:15, 141:16, 142:17, 143:18, 144:19, 145:6, 146:7, 147:11, 148:12, 149:13, 150:14, 470:10, 471:20, 768:8, 769:9, 770:21, 771:22, 772:23, 773:24, 774:25 }; var array = []; for (var key in object) { array[object[key]] = key; } var newObject = {}; array.forEach(function(el, i) { newObject[el] = i; }); console.log(newObject);
我認為您無法在JavaScript中更改對象屬性的順序。
但是您可以通過對它的值進行排序並將其存儲在帶有屬性鍵和值的數組中來進行選擇:
var o = { 134:0, 135:1, 136:2, 137:3, 138:4, 139:5, 140:15, 141:16, 142:17, 143:18, 144:19, 145:6, 146:7, 147:11, 148:12, 149:13, 150:14, 470:10, 471:20, 768:8, 769:9, 770:21, 771:22, 772:23, 773:24, 774:25}; console.log(Object.keys(o).sort((a, b)=>{ return o[a]-o[b];}).map((e)=>{ return {key: e, value: o[e]};}));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.