Как отсортировать лексикографический массив строк JavaScript - PullRequest
0 голосов
/ 28 августа 2018

Как отсортировать лексикографический массив, например [aa bb cc dd ee] где вы берете первое лексикографически наименьшее имя и добавляете его к лексикографически наибольшему имени, затем берите второе лексикографически наименьшее имя и добавляете его ко второму лексикографически наибольшему имени. И если у вас есть нечетное количество элементов, как здесь, cc вывод, я думаю, должен быть eeaaccddbb как целая строка. В инструментах разработчика Mozilla для лексикографического массива нет функции, которую я нашел. И если они являются четным числом элементов массива, просто чтобы вернуть соответствующие конкатенации.

1 Ответ

0 голосов
/ 28 августа 2018

Вот что-то хорошее: 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"]))
...