Javascript中的JSON对象排序
JSON object sort in Javascript
我有一个由JSON.parse返回的JSON对象jobj=JSON.parse(jsnstr)数组,我希望按其名称对其进行排序。我用过
jobj=$(jobj).sort(sortfunction);
function sortfunction(a,b){
return a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1;
};
但这并没有成功,相反,我得到了未定义的 obj 任何帮助?
你不能对哈希进行排序;它必须是一个数组。您可以做的是设置每个 a.name 值对数组的引用,然后使用自定义函数对该数组进行排序,就像您在那里一样。
json = JSON.parse(...);
var refs = [];
for(var i in json) {
var name = i.name;
refs.push({
name : name.toLowerCase(),
object : i
});
}
var sorted = refs.sort(function(a,b) {
return a.name > b.name;
});
现在,refs 数组中的所有内容都已排序,您可以通过 sorted[index].object 单独访问每个对象。
我想
你的意思是写这个:
jobj=$(jobj).sort(function(a,b){
return a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1;
});
你不需要jQuery。 此外,sort
修改原始数组。 因此,如果jobj
是一个数组,您可以只做:
jobj.sort(sortfunction);
您可能还需要考虑a.name
和b.name
相同的情况:
function sortfunction(a,b){
var aSort = a.name.toLowerCase(),
bSort = b.name.toLowerCase();
if(aSort === bSort) return 0;
return aSort > bSort ? 1 : -1;
}
演示:http://jsfiddle.net/xmmPL/
相关文章:
- 在循环Handlebars之前重新排序对象键
- 将SortedMap从Java转换为Javascript中可读的排序对象
- 模仿`overflow-y:auto;overflow-x:visible `在jQuery UI可排序对象上
- Javascript排序对象日期
- Jquery UI:如何指示可拖动对象成功拖放到可排序对象上
- 删除数组中重复的未排序对象
- Javascript 递归地排序对象和嵌套对象以及数组
- 如何在目标可排序对象接收后获取拖动项的类
- Javascript:排序对象挑战
- 在 JavaScript 中合并多个排序对象数组的最有效方法是什么?
- 如何在角度UI中加载保存的可排序对象
- 任意重新排序和排序对象文字的 JavaScript 数组
- 使用下划线在javascript中重新排序对象
- 排序对象的多维数组与一个可变的深度在Javascript
- 在javascript中,排序对象不会传递给字符串变量
- JavaScript快速排序对象
- 在JavaScript数组中按键值排序对象
- 用布尔值排序对象
- 如何在D3.js中通过JSON文件解析按键排序对象
- Javascript如何按键排序对象,但不破坏原始对象的顺序