排序数字和字母元素的数组(自然排序)JavaScript

我们有一个包含一些数字和一些字符串的数组。我们需要对数组进行排序,以便对数字进行排序并将其放置在每个字符串之前,然后应按字母顺序对字符串进行排序。

例如-

排序后的数组

const arr = [1, 'fdf', 'afv', 6, 47, 7, 'svd', 'bdf', 9];

应该看起来像这样-

[1, 6, 7, 9, 47, 'afv', 'bdf', 'fdf', 'svd']

因此,让我们为此编写代码-

示例

const arr = [1, 'fdf', 'afv', 6, 47, 7, 'svd', 'bdf', 9];
const sorter = (a, b) => {
   if(typeof a === 'number' && typeof b === 'number'){
      return a - b;
   }else if(typeof a === 'number' && typeof b !== 'number'){
      return -1;
   }else if(typeof a !== 'number' && typeof b === 'number'){
      return 1;
   }else{
      return a > b ? 1 : -1;
   }
}
arr.sort(sorter);
console.log(arr);

输出结果

控制台中的输出将为-

[
   1, 6, 7,
   9, 47, 'afv',
   'bdf', 'fdf', 'svd'
]

了解代码-

该代码的主要部分是sorter函数,我们知道回调函数接收两个参数,它们都是数组的元素。

现在我们有四种可能性-

  • a和b都是数字→在这种情况下,我们将较小的数字放在较大的数字之前

  • a是数字,但是b是字符串→在这种情况下,我们按照问题中的要求将数字(a)放在字符串(b)之前。

  • a是字符串但b是数字→在这种情况下,我们将b放在a之前

  • a和b都是字符串→我们检查按字母顺序较小的字符串,即在字符串之前和之后。

猜你喜欢