将包含字符串和数字的JavaScript数组排序为仅数字数组和仅字符串数组

时间:2016-10-26 06:20:54

标签: javascript arrays loops sorting if-statement

我有一个包含以下数据的数组:

var arr = [30, "Chad", 400, 700, "Brian", "Zander", "allen", 43, 50]

我想将这个数组排序成一个只包含数字(从最低到最高)的数组和另一个只包含字符串的数组(按字母顺序排列 - Allen中的“a”目前是小写但仍应该在其他名称)。

我假设我会使用for循环和if / else语句,但我不确定语法。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

您可以使用filtersort功能。默认情况下,数组将被排序,将项目比较为strings。因此,对于numbers,您需要明确传递sorting function

.sort((a,b) => a - b);

对于字符串,默认比较是好的。



var arr = [30, "Chad", 400, 700, "Brian", "Zander", "allen", 43, 50]

var numbers = arr.filter(item => typeof item === 'number').sort((a,b) => a - b);
var strings = arr.filter(item => typeof item === 'string').sort((a,b) => a.localeCompare(b));

console.log(numbers);
console.log(strings);