JS中的自定义国际收集器

问题描述 投票:1回答:1

我需要对该数组进行排序

['$', 'z', 7, 'a', 1, '%', '.', 5, '% hello', ' ', 'f', '^' , '-', '_']

as

[ , %, % hello, _, -, ., ^, $, 1, 5, 7, a, f, z] 

但是我得到的结果是

[ , _, -, ., %, % hello, ^, $, 1, 5, 7, a, f, z] 

有什么方法可以创建自定义整理器?在这种情况下,能否获得任何特定字符或符号在其他符号之前说“%”的位置?

  var collator = Intl.Collator();
    var letters = ['$', 'z', 7, 'a', 1, '%', '.', 5, '% hello', ' ', 'f', '^' , '-', '_'];
    console.log(letters.sort(collator.compare));
javascript sorting string-comparison collator
1个回答
0
投票

您可以尝试这个吗?不确定是否为您的问题提供了完整的解决方案

var collator = Intl.Collator();
        var letters = ['$', 'z', 7, 'a', 1, '%', '.', 5, '% hello', ' ', 'f', '^', '-', '_'];
        arr = letters.sort(collator.compare);
        arr.forEach((item, index) => {
            if (String(item).indexOf('%') >= 0) {
                arr.splice(0, index + 1, ...arr.slice(0, index + 1).sort())
            }
        });
        console.log(arr);
© www.soinside.com 2019 - 2024. All rights reserved.