JavaScript实现一个数组,按照数字出现的频率排序输出

it2024-10-14  36

JavaScript实现一个数组,按照数字出现的频率排序输出

大致思路:

将数组的数据和出现次数通过键值对(对象)的形式储存起来,不存在,value值设为1,存在,value值加1.

通过Object.key得到一个obj的key值组成的数组。

对数组进行排序,通过obj的value对key进行排序

注:排序方法sort((i,j) => obj[j]-obj[i])

遍历数组每一项,在循环对象中数组每一项对应的value次数,再依次插入新数组中。 var arr = [1,2,4,2,4,1,6,3,4,6,6] function Numsort(arr){ var obj = {} //将数组中的数和出现的次数利用对象键值对的方式进行存储 for(var i = 0 ;i < arr.length ; i++){ if(!obj[arr[i]]){ obj[arr[i]] = 1; } else{ obj[arr[i]] = Number(obj[arr[i]])+ 1 } } console.log(obj) //把对象的key值变成数组并通过value值的大小进行排序 var sortArr = Object.keys(obj).sort((i,j) => obj[j]-obj[i])//排序方法的使用 console.log(sortArr) var newArr = [] for(var i = 0;i < sortArr.length; i++){ for(var j = 0; j < obj[sortArr[i]]; j++){ newArr.push(Number(sortArr[i])) } } console.log(newArr) } Numsort(arr)

写的有些乱,但是实现了排序要求,如果有错误的地方或者有更好的实现方法,请多指教

最新回复(0)