含负数、零、空字符串与正数的数组排序:空字符串置末尾
数组排序:将空字符串置于末尾的实现
需求说明
给定包含负数、0、正数和空字符串的数组,需完成排序:数字按升序排列,所有空字符串''始终位于数组末尾。
原始数组
[-1, 2, '', -2, 0, 4, '', 1, 5, 0, -5, 7, 11, '', 3]
期望输出
[-5, -2, -1, 0, 0, 1, 2, 3, 4, 5, 7, 11, '', '', '']
解决方案(JavaScript)
利用数组的sort()方法,自定义比较逻辑:
- 若其中一个元素是空字符串,调整排序优先级让空串后置
- 若都是数字,按常规升序规则比较
代码实现:
const originalArr = [-1, 2, '', -2, 0, 4, '', 1, 5, 0, -5, 7, 11, '', 3]; const sortedArr = originalArr.sort((a, b) => { // 处理空字符串:空串优先级最低,排到后面 if (a === '') return 1; if (b === '') return -1; // 数字按升序排列 return a - b; }); console.log(sortedArr);
逻辑解释
- 当
a是空字符串时,返回1,表示a的排序位置在b之后 - 当
b是空字符串时,返回-1,表示a的排序位置在b之前 - 两个元素都是数字时,通过
a - b实现升序排序(返回负数则a在前,正数则b在前)
运行上述代码后,输出结果与期望完全一致。
内容的提问来源于stack exchange,提问作者StaticName
相关产品推荐
相关产品推荐

