2016-01-06 4 views
-2

Итак, я пытаюсь найти, сколько из каждого числа от нуля до десяти генерируется в случайном массиве. Я создал случайный список массиваПодсчет чисел в случайном массиве

i=0; 
    var ranList=[]; 
    while (i<20){ 
     i++; 
     ranList.push(Math.floor(10*Math.random())); 
    } 
    //count each number 
    document.write(ranList.sort().join("<br>")); 

/*Then I made a function to count /elements from this array 
*/ 


    function ctnumber(array,elem){ 
     var ct=0; 
     var j =0; 
     while(j<array.length) 
     { 
     j++; 
      if(array[j]==elem){ 
      ct+=1;} 
     } 
     } 
     return ct; 
     } 
     alert(ctnumber(ranList,5)); 

Вторая функция не выполняет, ни малейшего представления, почему?

Спасибо!

+1

Может помочь, если вы немного очистите свой код и также покажете свой код, как он появляется, а не как два фрагмента. – JosephGarrone

+0

Хорошо, я сделаю это сейчас – Kepazino

+0

«Не исполняет» ?! Вроде, * вообще * ?! Мы не можем сказать вам, почему это основано на том, что вы показываете. – deceze

ответ

1

Во-первых, вы должны избегать использования массива имен для вас переменной: http://www.w3schools.com/js/js_reserved.asp

Ваши скобки тоже неправильно. Измените функцию на это, и она должна работать:

function ctnumber(arr,elem){ 
     var ct=0; 
     var j =0; 
     while(j<arr.length) 
     { 
     j++; 
      if(arr[j]==elem){ 
      ct+=1;} 
     } 
     return ct; 
     } 
+2

Это не отвечает на вопрос и будет лучше служить комментарием. – JosephGarrone

+0

@JosephGarrone спасибо. Я изменил ответ. – apxp

+0

Спасибо, что решает. По какой-то причине массив не вызывал проблем как переменную, может быть, потому, что он был на нижних окнах ... – Kepazino

1

Проблема с кодом, как заявил Пардип в своем комментарии, что у вас есть дополнительные } после ct+=1; в вашем втором while цикла.

Правильный код будет выглядеть так: Fiddle

i = 0; 
var ranList = []; 
while (i < 20) { 
    i++; 
    ranList.push(Math.floor(10 * Math.random())); 
} 
//count each number 
document.write(ranList.sort().join("<br>")); 

function ctnumber(array, elem) { 
    var ct = 0; 
    var j = 0; 
    while (j < array.length) { 
    j++; 
    if (array[j] == elem) { 
     ct += 1; // NOTE NO } HERE NOW 
    } 
    } 
    return ct; 
} 
alert(ctnumber(ranList, 5)); 

Я также предлагаю немного кода очистки:

var i = 0; 
var ranList = []; 
while (i < 20) { 
    i++; 
    ranList.push(Math.floor(10 * Math.random()); 
} 

function countNumbers(list, elem) { 
    var count = 0; 
    // For loops are generally more readable for looping through existing lists 
    for (var i = 0; i < list.length; i++) { 
     if (list[i] == elem) { 
      count++; 
     } 
    } 
    return count; 
} 
alert(countNumber(ranList, 5)); 

Обратите внимание, что console.log() является гораздо более эффективным инструментом отладки, она может быть доступна по F12 в Firefox и Chrome/IE.

+0

Спасибо, m, используя приложение Android для Android, чтобы узнать, как использовать консоль в нем – Kepazino