根据字符串中的字符对字符串数组进行排序

Sort an array of strings based on a character in the string

本文关键字:字符串 数组 排序 字符      更新时间:2023-09-26

我正试图根据每个字符串中的字符对字符串数组进行排序。到目前为止,我有这个

function doMath(s) {
  let arr = s.split(' ');
  let letterArr = [];
  let sortedArr = [];
  let n = 0;
  for (var i = 0; i < arr.length; i++) {
    n = arr[i].indexOf(arr[i].match(/[a-z]/i));
    letterArr.push(arr[i][n]);
  }
  letterArr.sort();
  console.log(letterArr);
  for (i = 0; i < arr.length; i++) {
    for (var j = 0; j <= arr[i].length; j++) {
      if (arr[i].indexOf(letterArr[j]) > -1) {
        sortedArr.unshift(arr[i]);
      }
    }
  }
  console.log(sortedArr);
}
doMath("24z6 1x23 y369 89a 900b");

当我记录这个数组时显示了这个问题。如果我用sortedArr.push(arr[i]);,那么输出为:

["24z6", "1x23", "y369", "89a", "900b"]

然而,当我使用sortedArr.unshift(arr[i]);时,我得到输出:

["900b", "89a", "y369", "1x23", "24z6"]

我不知道为什么ba之前。

我只想让它是排序的a-z。我试过push(),它是正确的,但向后(z-a)。当我尝试unshift()时,除了ba被切换之外,它是正确的。

function doMath(s) {
   return s.split(' ').sort(function (a,b) {
      return a.match(/[a-z]/i)[0].localeCompare(b.match(/[a-z]/i)[0])})
}
console.log(doMath("24z6 1x23 y369 89a 900b"));