我有一个子数组,我试图找到它在主数组中重复的次数。
我已经可以确定它是否是子数组,但无法进一步确定。我有什么想法可以在 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 子数组 = 1,2,3
子数组在主数组中重复两次
最佳答案
这是我为获得您所需的解决方案而制作的动态函数,
我采用了两个不同的数组并返回了两个动态的重复计数。
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));
请运行以上代码段
程序:
我创建了一个函数,它将主数组切成等于子数组长度的 block (部分),并将小数组的每个 block 与子数组进行比较。
如果 chunk(part) 等于 sub_array,则函数中的计数变量会递增并返回。
因此,我使该函数动态化,以便您可以使用不同的数组和子数组多次调用它。
关于javascript - 子数组在数组中重复的次数 - JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42239791/