我想按数字顺序合并和排序2个数组。按数字顺序合并和排序数字 - javascript
function merge_arrays(a, b) {
console.log((a.concat(b)).sort().join(" "));
}
这适用于数组中的单个数字,但它不能正确地对数字进行排序。
例如:
一个:[2,3,7,8,8,]
B:7,8,13]
将输出为:13 2 3 7 7 8 8 8
我错过了什么吗?
我想按数字顺序合并和排序2个数组。按数字顺序合并和排序数字 - javascript
function merge_arrays(a, b) {
console.log((a.concat(b)).sort().join(" "));
}
这适用于数组中的单个数字,但它不能正确地对数字进行排序。
例如:
一个:[2,3,7,8,8,]
B:7,8,13]
将输出为:13 2 3 7 7 8 8 8
我错过了什么吗?
从MDN报价:
默认的排序顺序是字典(不是数字)。
试试这个:
function merge_arrays(a, b) {
console.log((a.concat(b)).sort(function(a, b) { return a - b; }).join(" "));
}
http://www.w3schools.com/jsref/jsref_sort.asp
见该节 注意:当数字字母顺序排序, “40” 到来之前 “5”。
要执行数字排序,您必须在调用排序方法时将函数作为参数传递。
该函数指定数字是按升序还是降序排序。
含义这
function numOrdA(a, b){ return (a-b); }
和你的代码:
a.concat(b)).sort(numOrdA).join(" ")
试试这个:
c = a.concat(b)
c == [2,3,7,8,8,7,8,13]
c.sort() == [13,2,3,7,7,8,8,8]
这是因为,当不具备比较功能,排序自动转换它正在排序为字符串的列表的元素。在字符串土地“13”<“2”。
所以你可能想要的是这样的:
function compare_number(a,b) {
return a - b;
}
a.concat(b).sort(compare_number);
而且完全回答你的问题:
a.concat(b).sort(compare_int).join(" ");
其实,我想通了,我错过了里面的排序选项功能.sort() .sort(function(c,d){return cd)} – TJXStyles