【问题标题】:Sort array with characters in Javascript [duplicate]用Javascript中的字符对数组进行排序[重复]
【发布时间】:2018-04-04 15:30:09
【问题描述】:

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

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])
}

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

【问题讨论】:

  • 你能定义“特殊”字符是什么意思吗?您希望如何订购特殊的?谢谢。
  • 我只有“-”作为最后需要进来的字符。
  • 如果“-”是唯一的非数字字符,那么你可以这样做arr.sort(function(a,b) { return b - a });
  • 错误的欺骗目标,因为它没有回答不是用于排序的数字项目的问题。
  • @NinaScholz:然后将目标更改为合适的目标。我确定它存在。

标签: javascript sorting ecmascript-6


【解决方案1】:

您可以检查NaN 并将此项移至末尾。

var array = [5, 3, 10, "-", 2, "-"];

array.sort((a, b) => isNaN(a) - isNaN(b) || b - a);

console.log(array);

【讨论】:

  • 有效——var array = [5, 3, 10, "-", 2, "-"]; array.sort((a, b) => isNaN(a) - isNaN(b) || b - a);谢谢@尼娜
  • 不错。将布尔值作为整数进行算术运算的情况之一。
  • 因此,您不是关闭明显的重复项,而是仍然回答它们。
猜你喜欢
  • 2021-12-14
  • 1970-01-01
  • 2018-11-02
  • 2021-07-13
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
相关资源
最近更新 更多