javascript - 子数组在数组中重复的次数 - JavaScript

标签 javascript arrays sub-array

我有一个子数组,我试图找到它在主数组中重复的次数。

我已经可以确定它是否是子数组,但无法进一步确定。我有什么想法可以在 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,则函数中的计数变量会递增并返回。

HERE IS A WORKING DEMO

因此,我使该函数动态化,以便您可以使用不同的数组和子数组多次调用它。

关于javascript - 子数组在数组中重复的次数 - JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42239791/

相关文章:

javascript - 如何强制 jQuery 函数在更新文本之前完成淡入淡出动画?

javascript - React中子组件更新时如何更新父组件

javascript - 使用 sinon 和 mocha 执行测试时不执行 stub 函数

java - 使用线程循环数组

c - C中数组的最大大小是多少?

c++ - 创建一个固定大小的 std::vector 并写入元素

arrays - 如何从 Swift 2.0 获取子数组

javascript - 关于javascript的var关键字的问题

arrays - 如何将数组划分为 K 个子数组,以使所有子数组中重复元素的数量之和最小?

c++ - 计算 'atmost K' 和 'atmost K-1' 的值以获得 'equals K' 的答案背后的直觉