JavaScript:我可以在数组中对String进行排序(可能无法正常使用排序)

时间:2019-06-21 18:36:29

标签: javascript arrays sorting

我想对数组中的字符串进行排序,而不是常规排序,因为如果这样做,结果将是:

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

答案将是:

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

我不想要的,我想要的排序数组是数组内部的字符串排序,例如:

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

预期答案:

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

希望我的问题对您很清楚:)

3 个答案:

答案 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)

  1. .map()方法遍历数组的每个元素。

  2. 使用ES6 arrow函数和Destructuring assignment运算符来简化代码,如果要使用ES5,请使用常规函数并使用.split('')方法。

  3. p>
  4. .sort()方法在分割各个字符后对其进行排序。

  5. .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);