计算数组元素的出现/频率

计算数组元素的出现/频率

在Javascript中,我试图获取一个数字值的初始数组,并计算其中的元素。理想情况下,结果将是两个新数组,第一个数组指定每个唯一元素,第二个数组包含每个元素发生的次数。但是,我愿意听取关于输出格式的建议。

例如,如果初始数组是:

5, 5, 5, 2, 2, 2, 2, 2, 9, 4

然后将创建两个新数组。第一个元素将包含每个唯一元素的名称:

5, 2, 9, 4

第二个将包含该元素在初始数组中发生的次数:

3, 5, 1, 1

因为数字5在初始数组中发生了三次,所以数字2发生了五次,9和4都出现了一次。

我已经寻找了很多解决方案,但似乎没有什么效果,我自己尝试过的每一件事最终都变得非常复杂。任何帮助都将不胜感激!

谢谢:)


泛舟湖上清波郎朗
浏览 467回答 3
3回答

小怪兽爱吃肉

可以使用对象来保存结果:var arr = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4];var counts = {};for (var i = 0; i < arr.length; i++) {&nbsp; var num = arr[i];&nbsp; counts[num] = counts[num] ? counts[num] + 1 : 1;}console.log(counts[5], counts[2], counts[9], counts[4]);所以,现在您的计数对象可以告诉您某个特定数字的计数是什么:console.log(counts[5]);&nbsp;//&nbsp;logs&nbsp;'3'如果您想获得一个成员数组,只需使用keys()功能keys(counts);&nbsp;//&nbsp;returns&nbsp;["5",&nbsp;"2",&nbsp;"9",&nbsp;"4"]

繁华开满天机

var&nbsp;a&nbsp;=&nbsp;[5,&nbsp;5,&nbsp;5,&nbsp;2,&nbsp;2,&nbsp;2,&nbsp;2,&nbsp;2,&nbsp;9,&nbsp;4].reduce(function&nbsp;(acc,&nbsp;curr)&nbsp;{ &nbsp;&nbsp;if&nbsp;(typeof&nbsp;acc[curr]&nbsp;==&nbsp;'undefined')&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;acc[curr]&nbsp;=&nbsp;1; &nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;acc[curr]&nbsp;+=&nbsp;1; &nbsp;&nbsp;} &nbsp;&nbsp;return&nbsp;acc;},&nbsp;{});//&nbsp;a&nbsp;==&nbsp;{2:&nbsp;5,&nbsp;4:&nbsp;1,&nbsp;5:&nbsp;3,&nbsp;9:&nbsp;1}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript