2017-02-15 48 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. 

细节留给作为练习发问:-)