2013-09-29 166 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; 

請記住,這其實是錯誤代碼,你應該使用循環。