2013-09-29 165 views
1

我有一个Javascript课程的任务,我必须计算每个特定类型的元素在数组中出现多少个元素。数组长度为105个元素,并且只出现数字1,2,3,4和5.我必须计算多少个1,2,3等。使用Javascript计算数组中元素的数量

当然,有一个简单的方法可以执行但是我的老师在作业结束后添加了以下内容:

只使用length属性,toString(),sort()和indexOf()方法。请不要循环或条件语句。

我不知道如何在不使用循环的情况下做这个任务。任何帮助,你可以给我非常感谢。谢谢!

+0

对数组进行排序后,查看第一次出现的数字的索引。 – halfbit

+0

好的,那我该怎么办?数组排序。如何在没有循环或语句的情况下获取总数? – user2513846

回答

2

这将是的answere:

var c=[1,2,3,4,5,2,3,4,5] 
    c.sort() 

    cout_of_1 = c.indexOf(2)-c.indexOf(1); 
    cout_of_2 = c.indexOf(3)-c.indexOf(2); 
    cout_of_3 = c.indexOf(4)-c.indexOf(3); 
    cout_of_4 = c.indexOf(5)-c.indexOf(4); 
    cout_of_5 = c.length-c.indexOf(5)+1; 
1

因为这是一个任务,你还没有真正显示一个尝试,我只给你一对夫妇的提示。

  • 一旦排序阵列,所有的1秒的将在阵列的开始被分组在一起,那么所有的2S,等等
  • indexOf函数返回第一指数在该给定的元素可以在数组中找到,如果不存在则为-1。

给定排序数组中每个数字第一次出现的索引,您应该能够计算出每个数字有多少。我不确定你会需要toString()。你的老师可能已经投入了偷偷摸摸。

+0

我仍然不明白如何在对数组进行排序后得到总数。完全失去。所有解决方案都带有循环或语句。这难道不像介绍性课程练习那么简单,所以你可以理解为数组?难怪为什么你这么容易灰心。 – user2513846

0

首先对数组进行排序,然后抓取第一个出现的下一个值。这是你拥有的数字量,减去你已经拥有的数量。

var array = [1,2,5,3,2,4,5,2,1,3,3,4,5,6,2]; 
array = array.sort(); 

var ones = array.indexOf(2); 
var twos = array.indexOf(3) - ones; 
var threes = array.indexOf(4) - ones - twos; 
... 

但是对于最后一个值(5),没有下一个要检查的值。你可以通过检查长度并从中减去一个来解决这个问题。

var fives = array.length - ones - twos - threes - fours; 

请记住,这其实是错误代码,你应该使用循环。