Я хочу отсортировать строку внутри массива, а не обычную сортировку, потому что если я это сделаю, результат будет:
var a = ["dcb","acb","gfe"];
console.info(a.sort());
ответ будет:
["acb","dcb","gfe"]
чего я не хочу, отсортированный массив, который я хочу, - это сортировка строки внутри массива, например:
var a = ["dcb","acb","gfe"];
ожидаемый ответ:
["bcd","abc","efg"]
надеюсь мой вопрос вам понятен :)
Возможный дубликат Сортировать все символы в строке
@JaredSmith, почему ты ответил комментарием, а не ответом?
альтернативный, более лаконичный синтаксис: a.map(s=>[...s].sort().join(''))
Метод .map()
выполняет итерацию по каждому элементу массива, а код обратного вызова карты сортирует этот отдельный элемент. Это сработает.
@RandyCasburn хорошо.
@Джон, потому что это обман, и я проголосовал за закрытие.
Используйте Array.map()
и сортируйте каждую строку отдельно:
const arr = ["dcb","acb","gfe"];
const result = arr.map(str => str
.split('')
.sort()
.join('')
)
console.info(result);
альтернативный, более лаконичный синтаксис: a.map(s=>[...s].sort().join(''))
Вам все равно нужно присоединиться к отсортированному массиву.
@RandyCasburn .split('')
, по общему признанию, имеет большую симметрию с .join('')
, что упрощает понимание реализации, даже если для ввода требуется немного больше символов ... Я не думаю, что «краткость» обязательно является наиболее важным качеством здесь при сравнении этих двух подходов. .
@PatrickRoberts - предлагается только в качестве альтернативы. Я полностью ценю и понимаю ваш комментарий. Я проголосовал за этот ответ :-)
Чтобы выполнить операцию над каждым элементом массива (в данном случае отсортировать строку), используйте цикл. Функция Array.prototype.map
является подходящей «функцией цикла», когда вы хотите сопоставить массив длины n с массивом той же длины (т. е. когда вы хотите преобразовать каждый элемент массива).
let a = ["dcb", "acb", "gfe"];
let sorted = a.map(a => [...a].sort().join(''));
console.info(sorted);
альтернативный, более лаконичный синтаксис: a.map(s=>[...s].sort().join(''))
Метод .map() перебирает каждый элемент массива.
Используйте функцию стрела ES6 и оператор Назначение деструктурирования для упрощения кода, если вы хотите использовать ES5, используйте обычную функцию и метод .split('').
Метод .sort() для сортировки отдельных символов после их разделения.
Метод .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);
a.map(s => s.split('').sort().join(''))