我有一个Javascript课程的作业,我必须计算每个特定类型的元素在阵列中出现的数量。数组长度为105个元素,只出现数字1,2,3,4和5.我必须计算1个,2个,3个等的数量。
当然,使用循环有一种简单的方法可以做到这一点,但是我的老师在作业结束时添加了以下内容:
仅使用length属性,toString(),sort()和indexOf()方法。请不要循环或有条件的陈述。
我不知道如何在不使用循环的情况下完成此任务。非常感谢您给予我的任何帮助。谢谢!
答案 0 :(得分:2)
这将是回答:
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)
由于这是一项任务,而你还没有真正展示过尝试,我只会给你一些提示。
indexOf
函数返回第一个索引,在该索引处可以在数组中找到给定元素,如果不存在则返回-1。给定排序数组中每个数字首次出现的索引,您应该能够计算出每个数字的数量。我不确定你根本不需要toString()
。你的教练可能会把它扔进去偷偷摸摸。
答案 2 :(得分: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;
请记住,这实际上是错误的代码,应该使用循环。