chi*_*chi 5 javascript arrays algorithm
有人可以指导我完成这个练习吗?编写一个 JavaScript 程序来查找数组中最频繁的项。
var arr1 = [3, 'a', 'a', 'a', 2, 3, 'a', 3, 'a', 2, 4, 9, 3];
var mf = 1;
var m = 0;
var item;
for (var i = 0; i < arr1.length; i++) {
for (var j = i; j < arr1.length; j++) {
if (arr1[i] == arr1[j]) m++;
if (mf < m) {
mf = m;
item = arr1[i];
}
}
m = 0;
}
alert(item + " ( " + mf + " times ) ");Run Code Online (Sandbox Code Playgroud)
我一直在查看有关 stackoverflow 的一些类似问题,只是找不到我想要的答案。
我的问题是:
我不明白为什么需要有两个 for 循环。
为什么需要mf和m。好像有点混乱。
有没有其他解决方法?
用户想要的代码解释:
在这里,他们选择数组的第一个元素,并将其与随后的每个元素进行比较。
m然后,每当相同的元素再次出现时,它们就会增加计数器,即该元素的频率。
还保留一个变量mf来跟踪最大频率。将元素频率与最大频率进行比较并item根据mf当前元素的频率进行更新。
var arr1=[3, 'a', 'a', 'a', 2, 3, 'a', 3, 'a', 2, 4, 9, 3]; //array
var mf = 1; //default maximum frequency
var m = 0; //counter
var item; //to store item with maximum frequency
for (var i=0; i<arr1.length; i++) //select element (current element)
{
for (var j=i; j<arr1.length; j++) //loop through next elements in array to compare calculate frequency of current element
{
if (arr1[i] == arr1[j]) //see if element occurs again in the array
m++; //increment counter if it does
if (mf<m) //compare current items frequency with maximum frequency
{
mf=m; //if m>mf store m in mf for upcoming elements
item = arr1[i]; // store the current element.
}
}
m=0; // make counter 0 for next element.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19109 次 |
| 最近记录: |