数组排序问题

有一个数组:
[2,3,1,3,4,2,35,63,35,2]

我想要的输出结果 :
[2,2,2,3,3,1,4,35,35,63]

请问该怎么写呀,谢谢了

阅读 2.5k
3 个回答

循环去做排序

function headSort(arr) {
  const len = arr.length
  let left = 0

  while (left < len) {
    for (let i = left + 1; i < len; i++) {
      if (arr[i] === arr[left]) {
        ++left
        arr.splice(left, 0, arr.splice(i, 1)[0])
      }
    }

    ++left
  }

  return arr
}

console.log(headSort([2, 3, 1, 3, 4, 2, 35, 63, 35, 2])) // [2, 2,  2,  3,  3, 1, 4, 35, 35, 63]

好吧,看懂题目了
应该是判断每个然后获取相同的,放在当前位置。

[2,3,1,3,4,2,35,63,35,2].reduce((acc,cur,idx,arr)=>(acc.includes(cur) ? acc : (acc.concat(arr.filter(item=>item==cur)))),[])

结果
[2, 2, 2, 3, 3, 1, 4, 35, 35, 63]

如果没理解错的话

arr.sort((a,b) => {
    if (a > b) return 1;
    if (a < b) return -1;
    if (a === b) return 0;
}); // => [1, 2, 2, 2, 3, 3, 4, 35, 35, 63]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏