我有一个包含以下数据的数组:
var arr = [30, "Chad", 400, 700, "Brian", "Zander", "allen", 43, 50]
我想将这个数组排序成一个只包含数字(从最低到最高)的数组和另一个只包含字符串的数组(按字母顺序排列 - Allen中的“a”目前是小写但仍应该在其他名称)。
我假设我会使用for循环和if / else语句,但我不确定语法。任何帮助将不胜感激。
答案 0 :(得分:3)
您可以使用filter和sort功能。默认情况下,数组将被排序,将项目比较为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);