所以我有这样的虚拟数据对象:
var Products = {
'sku': {n:'Trampolines rain covers',v:'7Ft',l:'http://www.google.com',i:['media/cache/search/media/1151-Trampoline-jumping-mat.png','media/cache/searchSuggest/media/1151-Trampoline-jumping-mat.png','#'],r:['4','3.2','0','1','3','0','0'],p:['7.99','9.99'],d:'Some kind of description',f:'Features',b:'Benefits',s:'Specifications'},
'sku2': {n:'Icon cast adjustable dumbbell',v:'10kg',l:'http://www.google.com',i:['media/cache/search/media/1167-Single-dumbbell.png','media/cache/searchSuggest/media/1167-Single-dumbbell.png','#'],r:['4','2.5','1','0','1','0','2'],p:['7.99','9.99'],d:'Some kind of description',f:'Features',b:'Benefits',s:'Specifications'},
'sku3': {n:'Trampolines safety net & bases',v:'6Ft',l:'http://www.google.com',i:['media/cache/search/media/1195-Trampoline-safety-net.png','media/cache/searchSuggest/media/1195-Trampoline-safety-net.png','#'],r:['3','3.5','1','0','1','0','1'],p:['7.99','9.99'],d:'Some kind of description',f:'Features',b:'Benefits',s:'Specifications'},
'sku4': {n:'Andico spring for trampolines',v:'5.5 inch',l:'http://www.google.com',i:['media/cache/search/media/1166-Trampoline.png','media/cache/searchSuggest/media/1166-Trampoline.png','#'],r:['3','3.5','1','0','1','0','1'],p:['7.99','9.99'],d:'Some kind of description',f:'Features',b:'Benefits',s:'Specifications'}
}
然后我有一系列skus
var skus = ['sku','sku3','sku4'];
我的任务是按字母顺序升序sku对象属性 n (多字的字符串/产品标题)对此数组进行排序。
我知道我应该使用.sort(ref)函数,但我不知道里面有函数,比如:
skus.sort(function(a,b) { });
但是我无法找到如何制定内部功能来完成工作。也许我应该以另一种方式做到这一点?
答案 0 :(得分:4)
你几乎就在那里。在函数中,您使用a
和b
来查找Products
对象上的条目,以便比较条目:
skus.sort(function(a, b) {
var an = Products[a].n,
bn = Products[b].n;
if (an === bn) {
return 0;
}
return an < bn ? -1 : 1;
});