【问题标题】:Sort JavaScript Array With Both Strings and Numbers into a numbers only array and a string only array将包含字符串和数字的 JavaScript 数组排序为仅数字数组和仅字符串数组
【发布时间】:2016-10-26 06:20:53
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: javascript arrays loops sorting if-statement


    【解决方案1】:

    您可以使用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);

    【讨论】:

    • 如果其中一个字符串名称是小写的怎么办?像“艾伦”而不是“艾伦”。建议?
    • @My-name-is-mud 默认情况下 Uppercase 是第一个
    • @My-name-is-mud 但您也可以为strings 传递一个函数并使用localeCompare 函数
    • 你能给我那个语法吗?非常感谢。
    猜你喜欢
    • 2021-08-08
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 2011-03-07
    • 2013-04-15
    • 1970-01-01
    相关资源
    最近更新 更多