[英]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/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.