SoFunction
Updated on 2025-04-14

JavaScript implements imitation of Windows file name sorting

introduction

In JavaScript, array sorting is a common operation, but the default() method can only perform simple string comparisons. When dealing with complex data, we need to customize the sorting function to meet specific needs. This article will use a specific code example to explain how to implement a sorting algorithm that mimics Windows file names, which can sort according to the numbers in the string.

Code

const arr = ["aa10", "aa12", "aa1", "aa2"];
((v1, v2) => {
  var a = v1;
  var b = v2;
  var reg = /[0-9]+/g;
  var lista = (reg);
  var listb = (reg);
  if (!lista || !listb) {
    return (b);
  }
  for ( var i = 0, minLen = (, );i < minLen;i++) {
    //The number where the number is located    var indexa = (lista[i]);
    var indexb = (listb[i]);
    //The prefix before the number    var prefixa = (0, indexa);
    var prefixb = (0, indexb);
    //The string of numbers    var stra = lista[i];
    var strb = listb[i];
    //The value of the number    var numa = parseInt(stra);
    var numb = parseInt(strb);
    //If the numbers are not equal or the prefix is ​​not equal, it is a case where the prefix is ​​different, compare directly    if (indexa != indexb || prefixa != prefixb) {
      return (b);
    } else {
      //The string of numbers is inclusive      if (stra === strb) {
        //If it is the last number, compare the suffix of the number        if (i == minLen - 1) {
          return (indexa).localeCompare((indexb));
        }
        //If it is not the last number, the loop jumps to the next number and removes the same part before        else {
          a = (indexa + );
          b = (indexa + );
        }
      }
      //If the string of the number is not complete, but the values ​​are equal      else if (numa == numb) {
        // Directly compare the number of prefixes 0, the number of more is smaller        return (numb + "") - (numa + "");
      } else {
        //If the numbers are not equal, directly compare the size of the numbers        return numa - numb;
      }
    }
  }
});
(arr);

Code Function

This code defines a sorting function that sorts string elements in an array. It first matches all sequences of numbers in the string using the regular expression [0-9]+. If there are no numbers in the two strings, or the sequence of numbers does not match, it will use the localeCompare method for the default string comparison.

Sort logic:

Match sequences of numbers: Use regular expressions to extract sequences of numbers in strings.

Compare numeric sequences: For each numeric sequence, compare its position, prefix, and numeric values ​​in the string.

Position and prefix comparison: If the position or prefix of the sequence of numbers is different, use string comparison directly.

Numerical comparison: If the sequence of numbers is the same, compare their values.

Suffix comparison: If all numeric sequences are the same, compare the string portion after the numeric sequence.

Application scenario: This sorting algorithm is suitable for scenarios where you need to sort according to the numbers contained in a string, such as file name sorting, product model sorting, etc.

Summarize

Through custom sorting functions, we can flexibly handle various complex sorting needs.

This is the article about JavaScript implementing the sorting of Windows file names. For more related content on JavaScript imitation Windows file names, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!