首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >array javascript对多维数组进行排序

array javascript对多维数组进行排序
EN

Stack Overflow用户
提问于 2015-01-19 00:04:01
回答 1查看 21关注 0票数 0

我有一个按名字排序的数组,但是如何按第一个姓氏和第二个姓氏排序。

你能帮帮我吗?

代码语言:javascript
复制
  x=100
    var  miArray = [["john", "doe", "man"],
                    ["doe", "man", "john"],
                    ["man", "john"],
                    ["ferrer", "hunt", "doe"],
                    ["hunt", "ferrer", "Blanch"],
                    ["fontar", "gonza", "ferrer"],
                    ["gonza", "lopo", "fontar"],
                    ["lopo",  "fontar", "gonza"],
                    ["mortar", "fanta", "lopo"],
                    ["fanta", "mortar"],
                    ["cola", "fanta"]];
   document.write("Ordered by name<br><br>");
    miArray.sort();
    document.write("["+miArray.join("]-[")+"]<br/>");
EN

回答 1

Stack Overflow用户

发布于 2015-01-19 00:18:37

您可以使用提供自定义函数的sort对数组进行排序:

代码语言:javascript
复制
var  miArray = [["john", "doe", "man"],
                ["doe", "man", "john"],
                ["man", "john"],
                ["ferrer", "hunt", "doe"],
                ["hunt", "ferrer", "Blanch"],
                ["fontar", "gonza", "ferrer"],
                ["gonza", "lopo", "fontar"],
                ["lopo",  "fontar", "gonza"],
                ["mortar", "fanta", "lopo"],
                ["fanta", "mortar"],
                ["cola", "fanta"]];

function compare(a, b) {
  if (a[0] > b[0]) {// bigger
    return 1;
  }
  if (a[0] < b[0]) {// smaller
    return -1;
  }

  return 0;// equal
}

function compareArray(a,b) {// Order by name, if names are equal by first surname, if first surname is equal, then by second surname.
    var res = 0;

    res= compare(a[0],b[0]);

    if( res === 0 ) { // First name is equal
        res = compare(a[1],b[1]); 
        if( res === 0 ) { // Second Name is equal
            return compare(a[2],b[2]);// Third name rules.
        }
    }

    return res;
}

miArray.sort(compareArray);
console.log(miArray);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28011782

复制
相关文章

相似问题

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