我正在使用数值和" - "对数组进行排序。作为一个角色。 我的数组是
var arr = [5, 3, 10, "-", 2, "-"]
我想要用数字值排序,然后是所有" - "字符。
必填结果: -
final array = [10, 5, 3, 2, "-", "-"]
我尝试过: -
var array_with_chars= arr.filter(function( element ) {
return element.name == '-';
});
var array_with_nums= arr_obj.filter(function( element ) {
return element.name !== '-';
});
array_with_nums.sort(function(a, b) {
return b.name - a.name;
});
for(var i = 0; i< array_with_chars.length; i++){
array_with_nums.push(array_with_chars[i])
}
有没有什么好方法可以在单次迭代中对此进行排序?
答案 0 :(得分:2)
您可以检查NaN
并将此项目移至最后。
var array = [5, 3, 10, "-", 2, "-"];
array.sort((a, b) => isNaN(a) - isNaN(b) || b - a);
console.log(array);