Wie im Bild gezeigt, möchte ich die Reihenfolge basierend auf „1“, „99“, „23“ umkehren;
NvTC
欢迎选择我的课程,让我们一起见证您的进步~~
1 var obj = { 2 '1':{ 3 val:'red' 4 }, 5 '99':{ 6 val:'yellow' 7 }, 8 '37':{ 9 val:'blue' 10 } 11 }; 12 13 function selirizeData(obj){ 14 var keys = Object.keys(obj).sort(function(a,b){ 15 return a-b; 16 }); 17 var newObj = {}; 18 keys.forEach(function(val){ 19 newObj[val] = obj[val]; 20 }); 21 console.log(keys); 22 console.log(newObj); 23 } 24 selirizeData(obj);
先用Object.keys()获取对象的键数组,然后用数组的排序方法进行排序,再用数组的foreach方法循环下数组,将原对象的数据排序后写入到新的对象中。
var obj = { /* ..略.. */ } var res = Object.keys(obj).map(e => parseInt(e)).sort().map(e => obj[e]);
JS的对象是 无序的。另外:{
"11": "aaa"
}里面的 11 是字符串。
思路:forin所有的key到Array,排序Array.sort(),遍历Array,按顺序取值obj[key]
forin
key
Array
Array.sort()
obj[key]
var keys = []; for (var i in obj) { keys.push(i); } keys.sort(); for (var i = 0; i < keys.length; i++) { var key = keys[i]; console.log(obj[key]); }
Object中,以键=>值对存放数据,不存在顺序问题
先用Object.keys()获取对象的键数组,然后用数组的排序方法进行排序,再用数组的foreach方法循环下数组,将原对象的数据排序后写入到新的对象中。
JS的对象是 无序的。
另外:
{
}
里面的 11 是字符串。
思路:
forin
所有的key
到Array
,排序Array.sort()
,遍历Array
,按顺序取值obj[key]