我有一个 Javascript 课程的作业,我必须计算每个特定类型的元素中有多少出现在数组中。该数组有 105 个元素长,并且只出现了数字 1、2、3、4 和 5。我必须计算有多少个 1、2、3 等。
当然,有一个简单的方法可以使用循环来做到这一点,但是我的老师在作业结束时添加了以下内容:
仅使用长度属性、toString()、sort() 和 indexOf() 方法。请不要循环或条件语句。
我不知道如何在不使用循环的情况下完成这项任务。非常感谢您能给我的任何帮助。谢谢!
我有一个 Javascript 课程的作业,我必须计算每个特定类型的元素中有多少出现在数组中。该数组有 105 个元素长,并且只出现了数字 1、2、3、4 和 5。我必须计算有多少个 1、2、3 等。
当然,有一个简单的方法可以使用循环来做到这一点,但是我的老师在作业结束时添加了以下内容:
仅使用长度属性、toString()、sort() 和 indexOf() 方法。请不要循环或条件语句。
我不知道如何在不使用循环的情况下完成这项任务。非常感谢您能给我的任何帮助。谢谢!
这将是答案:
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;
由于这是一项任务,而您还没有真正尝试过,所以我只给您一些提示。
indexOf
函数返回可以在数组中找到给定元素的第一个索引,如果不存在,则返回 -1。给定排序数组中每个数字第一次出现的索引,您应该能够计算每个数字有多少。我不确定你是否需要toString()
。你的教练可能会把它扔进去偷偷摸摸。
首先,对数组进行排序,然后获取下一个值的第一次出现。那就是你拥有的数字的数量,减去你已经拥有的数字。
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;
请记住,这实际上是糟糕的代码,您应该使用循环。