如何排序JS数组,以与原始数组相同的顺序将单词放在前面,数字则排在后面

时间:2019-01-24 20:10:46

标签: javascript

说我有这个数组:

[ 'say', 'burger', '2000', '1000', '3000', 'full', 'no' ]

我希望得到这样的结果:

['say', 'burger', 'full', 'no', '1000', '2000', '3000']

请注意,单词全都位于前面,但顺序与原始数组相同,后面的数字则排序。我该怎么做?

2 个答案:

答案 0 :(得分:3)

您可以检查NaN并将此字符串移到顶部。

var array = ['say', 'burger', '2000', '1000', '3000', 'full', 'no'];

array.sort((a, b) => isNaN(b) - isNaN(a) || a - b);

console.log(array);

答案 1 :(得分:1)

const arr = ['say', 'burger', '2000', '1000', '3000', 'full', '300', 'no']

//['say', 'burger', 'full', 'no', '1000', '2000','300','3000']

const stringArr = [];
const intArr = []

arr.map(el => {
  if (!isNaN(el))
    intArr.push(el);
  else
    stringArr.push(el)
})




console.log([...stringArr, ...intArr.sort((a, b) => a - b)])