我想对数组中的字符串进行排序,而不是常规排序,因为如果这样做,结果将是:
var a = ["dcb","acb","gfe"];
console.log(a.sort());
答案将是:
["acb","dcb","gfe"]
我不想要的,我想要的排序数组是数组内部的字符串排序,例如:
var a = ["dcb","acb","gfe"];
预期答案:
["bcd","abc","efg"]
希望我的问题对您很清楚:)
答案 0 :(得分:4)
使用Array.map()
并对每个字符串分别排序:
const arr = ["dcb","acb","gfe"];
const result = arr.map(str => str
.split('')
.sort()
.join('')
)
console.log(result);
答案 1 :(得分:3)
要对数组的每个元素执行操作(在这种情况下,对字符串进行排序),请使用循环。当您要将长度为n的数组映射到相同长度的数组时(即,当您要变换数组的每个元素时),Array.prototype.map
函数是合适的“循环函数”。
let a = ["dcb", "acb", "gfe"];
let sorted = a.map(a => [...a].sort().join(''));
console.log(sorted);
答案 2 :(得分:0)
.map()方法遍历数组的每个元素。
使用ES6 arrow函数和Destructuring assignment运算符来简化代码,如果要使用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);