数组sort()在JavaScript中给出了错误的答案

时间:2018-02-22 15:07:45

标签: javascript

当我尝试使用sort()进行排序时,我在数组中有间隔,然后它给了我错误的答案,并且无法对其进行排序..有人知道我该如何对此进行排序。 这是我试过的

array=["1050-3000","150-250","1-49","3001-9999","251-400","401-600","601-1049","50-149"]

当我对它进行排序时: - array.sort(); 它给了我这个答案: -

["1-49","1050-3000","150-250","3001-9999","251-400","401-600","601-1049","50-149"]

但我的期望是: -

["1-49","50-149","150-250","251-400","401-600","601-1049","1050-3000","3001-9999"]

5 个答案:

答案 0 :(得分:7)

你必须split字符串并比较第一个元素。

let array = ["1050-3000", "150-250", "1-49", "3001-9999", "251-400", "401-600", "601-1049", "50-149"];

array.sort((a, b) => a.split("-")[0] - b.split("-")[0]);

console.log(array);

答案 1 :(得分:2)

您需要<?xml version="1.0" encoding="utf-8"?> <com.android.android.LemonView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/lemon_view" android:layout_width="wrap_content" android:layout_height="wrap_content" /> ,转换为split,然后进行比较

Number

答案 2 :(得分:2)

替换破折号并排序。您不需要拆分以获取阵列,然后访问第一个位置。

&#13;
&#13;
var array=["1050-3000","150-250","1-49","3001-9999","251-400","401-600","601-1049","50-149"];

array.sort((a, b) => a.replace('-', '') - b.replace('-', ''));

console.log(array);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

答案 3 :(得分:1)

排序功能为您提供正确的输出,因为它们是字符串,而不是数字。您必须编写自定义逻辑来处理此问题。

答案 4 :(得分:1)

你必须split破折号,以便在使用array.sort();函数时比较数组中的值

在这里,试试这个:

var array = ["1050-3000", "150-250", "1-49", "3001-9999", "251-400", "401-600", "601-1049", "50-149"];

array.sort((a,b) => a.split("-")[0] - b.split("-")[0]);

console.log(array);