【问题标题】:Sorting specific structure objects by their properties按属性对特定结构对象进行排序
【发布时间】:2014-02-07 15:30:16
【问题描述】:

所以我有这样的虚拟数据对象:

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) { });

但我不知道如何制定内部函数来完成工作。也许我应该用另一种方式来做这件事?

【问题讨论】:

    标签: javascript sorting object


    【解决方案1】:

    你就快到了。在函数中,您可以使用ab 来查找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;
    });
    

    【讨论】:

    • 谢谢,工作顺利。我有几个问题:排序会自动识别 aplha 还是数值?我尝试将 Products[a].n & ...b].n 更改为 Products[a].p[1] ..b].p[1]但它排序不正确。 :/附言我确实设置了不同的 p[1] 值,在这种情况下是否应该使用不同的函数?
    • @Tautvydas:你所有的p[1] 值都是'9.99',所以它们都是相等的。任何订单都是按您的p[1] 值排序的有效订单。
    • 是的,谢谢,我已将它们更改为不同的,但后来我意识到这些值是字符串...谢谢 T.J. !
    猜你喜欢
    • 2019-07-27
    • 2019-11-21
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 2013-02-12
    • 2023-04-03
    相关资源
    最近更新 更多