2014-09-02 28 views
2

我有一个包含对数组的数组。看起来是这样的:排序多维数组 - 数组(不是对象)

[[Jack],[1]], 
[[Larry],[0]], 
[[Veronica],[0]], 
[[Sam],[1]], 
[[Bob],[0]], 
[[David],[1]] 

我需要进行排序,以便它们按字母顺序排序AZ但任何人与值1至上

排序后,它应该是这样的:

[[David],[1]] 
[[Jack],[1]], 
[[Sam],[1]], 
[[Bob],[0]], 
[[Larry],[0]], 
[[Veronica],[0]], 

我有这两种排序功能,但我需要将它们合并。把它们一个接一个地弄乱整理。

q.sort(function(a, b){ //sort alphabetically 
     if(a[0].toLowerCase() < b[0].toLowerCase()){ 
      return -1; 
     }else if(a[0].toLowerCase() > b[0].toLowerCase()){ 
      return 1; 
     }else{ 
      return 0; 
     } 
    }); 

q.sort(function(a, b){return b[1] - a[1]}); //sort value 1/0 
+2

没有数组和对象之间的太大的区别,你觉得。 – Bergi 2014-09-02 19:43:42

+0

有很多名字和很多数字。我只是想节省处理时间。 – 2014-09-02 19:45:00

+0

不要过早地优化您的代码。我鼓励你改用JSON对象。它会更清晰,并且它会使您的排序比较函数更容易编写。 – kevin628 2014-09-02 19:46:12

回答

1

这样的事情怎么样?

b.sort(function(a, b) { 
    if (a[1] == 1 && b[1] == 0) return -1; 
    if (a[1] == 0 && b[1] == 1) return 1; 
    if(a[0].toLowerCase() < b[0].toLowerCase()){ 
     return -1; 
    }else if(a[0].toLowerCase() > b[0].toLowerCase()){ 
     return 1; 
    }else{ 
     return 0; 
    }}); 
+0

我试图修改它有点......它不是很正确的......不知道为什么。 Gimmie一秒钟。 – 2014-09-02 19:49:52

+0

在上面添加了一张图片来向你展示我所看到的 – 2014-09-02 19:53:35

+1

它似乎对我有用,唯一的区别是我的数组数组不是数组的第三级深度。 ''大卫“,1],[”杰克“,1],[”山姆“,[1]],[”拉里“,0],[”鲍勃“,0] [”维罗妮卡“ ,0]]' – Shriike 2014-09-02 19:53:41

3

更优雅的解决方案:

q.sort(function (a, b) { 
    return b[1] - a[1] || a[0].localeCompare(b[0]); 
}); 

说明:

  1. b[1] - a[1]:这是从第二函数的表达式;如果是0(虚假),则评估表达式的第二部分;
  2. a[0].localeCompare(b[0])localeCompare()与第一个函数类似(加上它支持语言环境)。
+0

检查出来...像紧凑 – 2014-09-02 20:20:44

+0

喜欢它,效果很好。 – 2014-09-02 20:32:23

0

使用本:

b.sort(function(a, b) { 
    if (a[1] == 1 && b[1] == 1 || a[1] == 0 && b[1] == 0) { 
     if (a[0].toLowerCase() < b[0].toLowerCase()) { 
      return -1; 
     } else if (a[0].toLowerCase() > b[0].toLowerCase()) { 
      return 1; 
     } 
    } else if (a[1] == 1 && b[1] == 0 || a[1] == 0 && b[1] == 1) { 
     return a[1] - b[1]; 
    } 
}); 
+2

你不需要第三个'return'的条件。 – Pavlo 2014-09-02 20:19:06