对于如何解决这类问题,我完全陷入困境 JS对象
o={"items":[
{"name":"Name 1","types":[
{"type":"Type 4","subtype":"Sub a"}
]},
{"name":"Name 2","types":[]},
{"name":"Name 3","types":[
{"type":"Type 1","subtype":"Sub x"}
]}
]}
我正在尝试按类型排序,类似于o.sortByType();
Array.prototype.sortByType = function(){
this.sort(function(a,b) {
var ap = a[types][type], bp = b[types][type];
if(ap!=undefined||bp!=undefined){
if (ap < bp) {return -1;}
if (ap > bp) {return 1;}
}else{
return 0;
}
})
return this;
}
我正在尝试重新排序数组:
的项目:
名称3,
名称1,
姓名2
此处使用的排序函数适用于项目对象的任何非嵌套属性 如果我在排序中使用[类型] [类型],则返回错误,未定义“类型” 如果我使用a.types.type,它只返回未修改的数组 就像我说的那样,我非常困难,任何帮助或指示都会非常感激。
答案 0 :(得分:1)
我假设您要使用类型作为键对数组进行排序。这是解决方案:
o.items.sort(function(a,b){
if(a.types.length == 0 || b.types.length == 0) {
return b.types.length - a.types.length;
}
return a.types[0].type.localeCompare(b.types[0].type);
});
这是example。