2017-02-15 49 views
1

我有一個子數組,我試圖找到它在主數組中重複的次數。子陣列在數組中重複的次數 - JavaScript

我的地方,我能確定它是否是一個子數組,但不能把它進一步的地步。任何想法,我可以在JavaScript中做到這一點。

function isSubArray(main_array, sub_array) 
    { 
     var i, j; 
     for (i=0,j=0; i<main_array.length && j<sub_array.length;) 
     { 
      if (main_array[i] !== sub_array[j]) 
      { 
       ++i; 
      } 
      else if (main_array[i] === sub_array[j]) 
      { 
       ++i; ++j; 
      } 
     } 
     if(j == sub_array.length) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

實施例:

陣列= 1,2,3,4,5,1,2,3 sub_array = 1,2,3

主陣列2中的sub_array重複次

+1

請[編輯]您的問題,以顯示一些代碼 - 以最小的顯示的示例輸入和相應的期望的輸出。當你談論重複的「子數組」時,你是在談論嵌套數組,還是像'[1,2,3,1,2,3]'重複'1,2,3'值? – nnnnnn

+0

你可以請發佈你迄今爲止做了什麼? – Dana

+0

嘗試後數組(如果它不是壓倒性大),你正在做的,試圖讓子陣 –

回答

0

這是一個動態的˚F我做的恩膏得到你所需要的解決方案,

我已經採取了兩種不同的陣列和返回兩個動態的重複計數。

var array = [1,2,3,4,5,1,2,3]; 
 
var array1 = [1,2,3,4,5,1,2,3,5,9,1,2,3]; 
 
var sub_array = [1,2,3]; 
 

 
function getRepeatedCount(array,sub_array) 
 
{ 
 
    var count = 0; 
 
    for(i = 0; i < array.length; i++ ) 
 
    { 
 
     // console.log((array.slice(i,i + sub_array.length)) === sub_array) 
 
     var repeated = ((array.slice(i,i + sub_array.length)).length==sub_array.length && (array.slice(i,i + sub_array.length)).every(function(v,i) { return v === sub_array[i]})) 
 
     if(repeated) 
 
     { 
 
      count += 1; 
 
     } 
 
    } 
 
    return count; 
 
} 
 
console.log("Array1",array, "Sub Array", sub_array, "Repeated count -> ",getRepeatedCount(array,sub_array)); 
 
console.log("Array1",array1, "Sub Array", sub_array, "Repeated count -> ",getRepeatedCount(array1,sub_array));

請執行上面的片段

步驟:

我創建了一個函數,該切片中的主陣列成塊(部分),其等於子陣列的長度並將每個小數組的塊與子數組進行比較。

如果塊(部分)等於子數組,則計數變量在該函數中增加並被返回。

HERE IS A WORKING DEMO

因此,我做了功能的動態,這樣就可以把它叫做你想用不同的陣列和sub_arrays多次。

+0

@Mahima,你檢查了答案? – Sravan

+0

是的,它運作良好。謝謝 – Mahima

0
1) Find the position of the first occurrence of the sub array in the main array. 
2) slice() off that bit of the main array. 
3) repeat until you find no more occurrences of the sub array in the main array. 
4) Count how many times you had to do what. 

細節留給作爲練習發問:-)