sky*_*ind 5 javascript jquery json
我有对象{"5":"5","4":"4","3":"3","2":"2","1":"1","-1":"P1",-2":"P2"}
并使用此函数来解析元素:
function floormake(inobj) {
var levels = '';
var obj = JSON.parse(inobj);
levels += '<ul>';
Object.keys(obj).sort(-1).forEach(function (key) {
levels += '<li>' + obj[key] + '</li>';
});
levels += '</ul>';
return levels;
}
Run Code Online (Sandbox Code Playgroud)
但结果总是按数字排序:-1,-2,1,2等.但我需要反向排序:5,4,3,2,1 ,排序(-1) - 不起作用
Joe*_*ton 10
考虑.reverse()改用.
Object.keys(obj).sort().reverse().forEach( ....
Run Code Online (Sandbox Code Playgroud)
编辑注意:正如@Shmiddty所提到的,reverse()方法实际上并没有排序.数组需要排序然后反转.
该Array.sort方法不接受整数作为唯一可选参数.它接受一个函数的引用,要么退货-1,0或者1,细节可以在这里找到:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort
以下是基于数字排序的示例:
var a = ["5", "9", "1", "399", "23", "21"];
function sorter(b, c) {
return (+b < +c ? 1 : -1);
}
alert(a.sort(sorter));
Run Code Online (Sandbox Code Playgroud)
或者更简单/更好的事情:
var a = ["5", "9", "1", "399", "23", "21"];
function sorter(b, c) {
return c - b;
}
alert(a.sort(sorter));
Run Code Online (Sandbox Code Playgroud)
并将其与您的实际示例相结合:
var a = {"2":"2","4":"4","-2":"P2","3":"3","300":"4","1":"1","5":"5","-1":"P1"};
function sorter(b, c) {
return c - b;
}
alert(Object.keys(a).sort(sorter));
Run Code Online (Sandbox Code Playgroud)
我混合了周围物体中的物品并添加了一个物品来证明它是准确/完全分拣的.
| 归档时间: |
|
| 查看次数: |
22884 次 |
| 最近记录: |