首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jscript:错误的分类行为?

jscript:错误的分类行为?
EN

Stack Overflow用户
提问于 2014-06-25 20:13:59
回答 1查看 44关注 0票数 0

我试图按照每个元素的'st‘属性中的值对多级对象进行排序:

代码语言:javascript
复制
var     aMyArr = [
        {
            "st" : "ISMTP"
        }, , {
            "st" : "IFTP"
        }, {
            "st" : "I"
        }
    ];


for (i in aMyArr){
    WScript.Echo(aMyArr[i].st);
}

aMyArr.sort(sortBySt);


for (i in aMyArr){
    WScript.Echo(aMyArr[i].st);
}


function sortBySt(param1, param2){
    var ret = 0;
    if (param1.st.toLowerCase() > param2.st.toLowerCase())
        ret = 1;

    if (param1.st.toLowerCase() < param2.st.toLowerCase())
        ret = -1;

    WScript.Echo(param1.st+" > "+param2.st+" ==> "+ret);
    return ret
}

当然,aMyArr的实际结构要复杂得多,对于这个问题,它是简化的。

输出是非常出乎意料的:

代码语言:javascript
复制
ISMTP  // before sorting
IFTP
I

IFTP > I ==> 1
IFTP > ISMTP ==> -1
IFTP > I ==> 1

I      // after sorting
ISMTP
IFTP

而我希望按字母顺序排列。据我所知,这可能是因为aMyArr不是纯数组,而是对象,但这并不能解释两个IFTP > I比较。

有什么办法把它正确地分类吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-26 14:57:23

更改:

代码语言:javascript
复制
var     aMyArr = [
        {
            "st" : "ISMTP"
        }, , {
            "st" : "IFTP"
        }, {
            "st" : "I"
        }
    ];

代码语言:javascript
复制
var     aMyArr = [
        {
            "st" : "ISMTP"
        }, {
            "st" : "IFTP"
        }, {
            "st" : "I"
        }
    ];

(删去“,")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24417717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档