为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

泛舟湖上清波郎朗 2019-06-10 16:30:06
计算数组元素的出现/频率在Javascript中,我试图获取一个数字值的初始数组,并计算其中的元素。理想情况下,结果将是两个新数组,第一个数组指定每个唯一元素,第二个数组包含每个元素发生的次数。但是,我愿意听取关于输出格式的建议。例如,如果初始数组是:5, 5, 5, 2, 2, 2, 2, 2, 9, 4然后将创建两个新数组。第一个元素将包含每个唯一元素的名称:5, 2, 9, 4第二个将包含该元素在初始数组中发生的次数:3, 5, 1, 1因为数字5在初始数组中发生了三次,所以数字2发生了五次,9和4都出现了一次。我已经寻找了很多解决方案,但似乎没有什么效果,我自己尝试过的每一件事最终都变得非常复杂。任何帮助都将不胜感激!谢谢:)
查看完整描述

3 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

可以使用对象来保存结果:


var arr = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4];

var counts = {};


for (var i = 0; i < arr.length; i++) {

  var num = arr[i];

  counts[num] = counts[num] ? counts[num] + 1 : 1;

}


console.log(counts[5], counts[2], counts[9], counts[4]);

所以,现在您的计数对象可以告诉您某个特定数字的计数是什么:

console.log(counts[5]); // logs '3'

如果您想获得一个成员数组,只需使用keys()功能

keys(counts); // returns ["5", "2", "9", "4"]


查看完整回答
反对 回复 2019-06-10
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

var a = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4].reduce(function (acc, curr) {
  if (typeof acc[curr] == 'undefined') {
    acc[curr] = 1;
  } else {
    acc[curr] += 1;
  }

  return acc;}, {});// a == {2: 5, 4: 1, 5: 3, 9: 1}


查看完整回答
反对 回复 2019-06-10
  • 3 回答
  • 0 关注
  • 466 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信