JavaScript: Могу ли я отсортировать строку в массиве (не возможно обычное использование сортировки) - PullRequest
2 голосов
/ 21 июня 2019

Я хочу отсортировать строку внутри массива, а не обычную сортировку, потому что если я сделаю это, результат будет:

var a = ["dcb","acb","gfe"];
console.log(a.sort());

ответ будет:

["acb","dcb","gfe"]

, чтоЯ не хочу, отсортированный массив, который я хочу, это сортировка строки внутри массива, например:

var a = ["dcb","acb","gfe"];

ожидаемый ответ:

["bcd","abc","efg"]

надеюсь, мой вопрос вам понятен:)

Ответы [ 3 ]

4 голосов
/ 21 июня 2019

Используйте Array.map() и сортируйте каждую строку отдельно:

const arr = ["dcb","acb","gfe"];

const result = arr.map(str => str
  .split('')
  .sort()
  .join('')
)

console.log(result);
3 голосов
/ 21 июня 2019

Чтобы выполнить операцию над каждым элементом массива (в этом случае отсортировать строку), используйте цикл. Функция Array.prototype.map является подходящей «функцией цикла», когда вы хотите отобразить массив длины n на массив такой же длины (т. Е. Когда вы хотите преобразовать каждый элемент массива).

let a = ["dcb", "acb", "gfe"];
let sorted = a.map(a => [...a].sort().join(''));
console.log(sorted);
0 голосов
/ 21 июня 2019
  1. Метод .map () выполняет итерацию по каждому элементу массива.

  2. Используйте функцию ES6 стрелка и Оператор назначения разрушения , чтобы упростить код, если вы хотите использовать ES5, использовать обычную функцию и использовать .split ('' ) метод.

  3. Метод .sort () для сортировки отдельных символов после его разделения.

  4. .join ('') метод присоединения к ним обратно.

Пример (ES6):

let a = ["dcb","acb","gfe"];
let sorted = a.map( s => [...s].sort().join('') );
consloe.log(sorted);

Пример (ES5):

let a = ["dcb","acb","gfe"];

let sorted = a.map( 
  function(s) { 
    return s.split('').sort().join(''); 
  });

consloe.log(sorted);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...