Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中使用字符对数组排序_Javascript_Sorting_Ecmascript 6 - Fatal编程技术网

在Javascript中使用字符对数组排序

在Javascript中使用字符对数组排序,javascript,sorting,ecmascript-6,Javascript,Sorting,Ecmascript 6,我正在用数值和“-”作为字符对数组进行排序。 我的数组是 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= a

我正在用数值和“-”作为字符对数组进行排序。 我的数组是

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])
}
var数组,带字符=arr.filter(函数(元素){
return element.name=='-';
});
var数组,带nums=arr\u对象过滤器(函数(元素){
return element.name!='-';
});
带排序的数组(函数(a,b){
返回b.name-a.name;
});
for(var i=0;i

有什么好方法可以在一次迭代中对其进行排序吗?

您可以检查
NaN
并将这些项目移到末尾

var数组=[5,3,10,“-”,2,“-”];
array.sort((a,b)=>isNaN(a)-isNaN(b)| b-a);

console.log(数组)您能定义“特殊”字符的含义吗?您想怎样订购特别的?Thx.I只有“-”作为需要最后输入的字符。如果“-”是唯一的非数字字符,那么您可以执行
arr.sort(函数(a,b){return b-a})错误的复制目标,因为它不能回答没有数字项进行排序的问题。@NinaScholz:然后将目标更改为正确的目标。我确信它是存在的,它可以工作——var数组=[5,3,10,“-”,2,“-”;array.sort((a,b)=>isNaN(a)-isNaN(b)| b-a);谢谢你,尼娜。在这种情况下,布尔数作为整数的运算效果非常好。所以,你不是在关闭明显的重复项,而是在回答它们。