【发布时间】:2015-07-07 22:17:39
【问题描述】:
我正在尝试对包含字符串数组的数组进行排序。它类似于这个问题(Sort an array with arrays in it by string),但我不确定如何实现。我的数组如下
var myArray = [
['blala', 'alfred', '...'],
['jfkdj', 'berta', '...'],
['vkvkv', 'zimmermann', '...'],
['cdefe', 'albert', '...'],
];
我正在尝试按名称或内部数组的第二个参数按字母顺序(不区分大小写)对其进行排序。之后,如果有两个元素具有相同的第二个参数,我想按第一个参数排序。我尝试使用以下但不成功,并没有真正明白为什么。任何人都可以建议:
function Comparator(a,b){
if (a[1] < b[1]) return -1;
if (a[1] > b[1]) return 1;
return 0;
}
var myArray = [
['blala', 'alfred', '...'],
['jfkdj', 'berta', '...'],
['vkvkv', 'zimmermann', '...'],
['cdefe', 'albert', '...'],
];
myArray = myArray.sort(Comparator);
要在第二个参数之后对第一个参数进行排序,我会这样做吗?
function Comparator(a,b){
if (a[1] < b[1]){
if (a[2] < b[2]) return -1
if (a[2] > b[2]) return 1;
}
return -1;
}
if (a[1] > b[1]) return 1;{
if (a[2] < b[2]) return -1
if (a[2] > b[2]) return 1;
}
return 1;
}
return 0;
}
var myArray = [
['blala', 'alfred', '...'],
['jfkdj', 'berta', '...'],
['vkvkv', 'zimmermann', '...'],
['cdefe', 'albert', '...'],
];
myArray = myArray.sort(Comparator);
【问题讨论】:
-
你有一个额外的
)-- 试试if(a[1] < b[1]) return -1; -
if (a[1] < b[1]) return -1; !== if(a[1]) < b[1]) return -1;! -
@Vohuman 相当肯定他希望有人解释代码,而不是为什么他的拼写错误。
-
检查@gordon stackoverflow.com/a/17998413/1841852提供的解决方案@一个JSFiddle示例和他的解决方案jsfiddle.net/f14bpuyk
-
您的第二个示例似乎是从 1 而不是 0 开始索引。
标签: javascript arrays node.js sorting