如何通过第二个元素对数组进行排序,第二个元素也是一个只包含一个元素的数组?
例如,以下数组
array = [
["text", ["bcc"], [2]],
["text", ["cdd"], [3]],
["text", ["aff"], [1]],
["text", ["zaa"], [5]],
["text", ["d11"], [4]]
];
应按如下方式排序:
sorted_array = [
["text", ["aff"], [1]],
["text", ["bcc"], [2]],
["text", ["cdd"], [3]],
["text", ["d11"], [4]],
["text", ["zaa"], [5]]
];
答案 0 :(得分:2)
您可以使用sort()
这样的方法。
var array = [
["text", ["bcc"], [1]],
["text", ["cdd"], [1]],
["text", ["aff"], [1]],
["text", ["zaa"], [1]],
["text", ["d11"], [1]]
];
var result = array.sort((a, b) => a[1][0].localeCompare(b[1][0]))
console.log(result)
答案 1 :(得分:2)
您应该使用接受.sort()
功能的callback
方法。
此外,您必须使用.localeCompare
方法才能比较两个strings
。
array = [
["text", ["bcc"], [1]],
["text", ["cdd"], [1]],
["text", ["aff"], [1]],
["text", ["zaa"], [1]],
["text", ["d11"], [1]]
];
var sortedArray=array.sort(callback);
function callback(a,b){
return a[1][0].localeCompare(b[1][0]);
}
console.log(sortedArray);
答案 2 :(得分:2)
您可以使用String#localeCompare
对嵌套元素进行排序。
var array = [["text", ["bcc"], [2]], ["text", ["cdd"], [3]], ["text", ["aff"], [1]], ["text", ["zaa"], [5]], ["text", ["d11"], [4]]];
array.sort(function (a, b) {
return a[1][0].localeCompare(b[1][0]);
});
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 3 :(得分:2)
您可以通过在数组排序函数中传递比较子级数组来实现它
array = [
["text", ["bcc"], [1]],
["text", ["cdd"], [1]],
["text", ["aff"], [1]],
["text", ["zaa"], [1]],
["text", ["d11"], [1]]
];
function Comparator(a, b) {
if (a[1] < b[1]) return -1;
if (a[1] > b[1]) return 1;
return 0;
}
array = array.sort(Comparator);
console.log(array);
希望有所帮助
答案 4 :(得分:1)
你可以这样做:
array.sort(function(a, b) {
if (a[1][0] > b[1][0])
return 1;
else if (a[1][0] < b[1][0])
return -1;
return 0;
});
答案 5 :(得分:1)
(仅适用于现代JavaScript引擎)
array.sort(([,[a]], [,[b]]) => a.localeCompare(b))