如何按字典顺序对字符串数组进行排序JavaScript

时间:2018-08-28 13:46:26

标签: javascript arrays sorting lexicographic

如何按字典顺序对例如[aa bb cc dd ee],其中您采用第一个按字典顺序最小的名称,并将其附加到按字典大的名称,然后采用第二个按字典最小的名称,并将其附加到第二个按字典最大的名称。而且,如果您有奇数个像cc这样的元素,我想输出应该是整个字符串eeaaccddbb。我没有在Mozilla Developer工具中找到按字典顺序排列的功能。如果它们是数组元素的偶数,则仅返回相应的串联。

1 个答案:

答案 0 :(得分:0)

这里很好:p

function weirdSortConcat(arr) {
  // sort lexicaly by default
  // to be exact sort by char code so digits(0-9) are before maj(A-Z) which are before min(a-z) 
  arr.sort()
  
  let output = ""

  // for half of the array
  for (let i = 0; i < Math.floor(arr.length / 2); i++) {
    // take starting at the end then starting by the start
    output += arr[arr.length - i - 1] + arr[i]
  }
  
  // if length is odd add last element to output
  if (arr.length % 2 === 1) {
    output += arr[Math.floor(arr.length / 2)]
  }
  
  return output
}

console.log(weirdSortConcat(["aa", "bb", "cc"]))
console.log(weirdSortConcat(["aa", "cc", "bb"]))
console.log(weirdSortConcat(["aa", "bb", "cc", "dd"]))