Javascript 检查数组中的项目序列是否重复

Javascript 检查数组中的项目序列是否重复,javascript,arrays,Javascript,Arrays,我想检查数组元素的任何序列是否重复,并能够设置序列的大小。例如: var array = ["a", "b", "c", "d", "b", "c", "a"] 如果您检查size=1(意味着如果任何单个元素重复),我应该得到true 如果您检查size=2(意味着如果任何两个元素都在重复),我应该得到true(b,c序列在重复) 如果你检查尺寸=3,我会

我想检查数组元素的任何序列是否重复,并能够设置序列的大小。例如:

var array = ["a", "b", "c", "d", "b", "c", "a"]
如果您检查size=1(意味着如果任何单个元素重复),我应该得到true

如果您检查size=2(意味着如果任何两个元素都在重复),我应该得到true(b,c序列在重复)

如果你检查尺寸=3,我会得到错误


谢谢你的帮助。我真的很坚持这一点

这可能不是最有效的答案,但它应该能满足您的需求

function checkSeq(arr, size) {
    for (var i = 0; i < arr.length; i++) {
      for (var j = i+1; j < arr.length; j++) {
        if (arr[i] === arr[j] && isValidSequence(arr, i, j, size)) {
          return true;
        }
      }
    }
    return false;
  }

function isValidSequence(arr, i, j, size) {
    for (var k = 1; k < size; k++) {
      if (j+k >= arr.size || arr[i+k] !== arr[j+k]) {
        return false;
      }
    }
    return true;
  }
功能检查顺序(arr,大小){
对于(变量i=0;i=arr.size | | arr[i+k]!==arr[j+k]){
返回false;
}
}
返回true;
}
我检查了你的3个条件,得到了正确的回答

checkSeq(数组,1)//true

checkSeq(数组,2)//true


checkSeq(array,3)//false

解决该任务的另一种方法是检查宽度为
N
的滑动窗口中的散列(串联值)是否多次出现:

const src=['a','b','c','d','b','c','a'],
hasDupSeqOfSizeN=(arr,N,hashMap=[])=>
arr.some(u,i,u,hash=arr.slice(i,i+N).join('\ud8ff'))=>
hashMap.includes(散列)| |(hashMap.push(散列),false))
console.log(hasDupSeqOfSizeN(src,2))

.as控制台包装{min height:100%;}
这里有一个解决方案,它应该适用于不仅仅是字符的数组项:

常量数组=[“a”、“b”、“c”、“d”、“b”、“c”、“a”、“a”、“a”、“b”、“c”] 功能检查顺序(顺序、大小){ const matches={};//存储潜在序列的计数,例如{a,b':1,'b,c':2} for(设i=0;i=2){ 返回true; } } 返回false; } log(检查序列(数组,1)); log(检查序列(数组,2)); log(检查序列(数组,3));
log(检查序列(数组,4))StackOverflow不是免费的编码服务。你应该会的。请更新您的问题,以显示您已在某个应用程序中尝试过的内容。有关更多信息,请参见,并以:)我同意,您应该展示您如何尝试解决此问题此示例代码,前提是在第1行中出现语法错误时“按原样”确实失败。我对javascript不太熟悉。添加函数声明是否修复了语法错误?1)语法错误已修复。。。2) 与FrostyZombi3方法相同的结果。。。3) 还有一个问题。。。第四行。。。将
this.isValidSequence
更改为
isValidSequence
。此示例失败,例如
。。。数组=[“b”,“b”]
。。。检查序列(数组,1)
。如果
array=[“b”,“b”]
和size=1(序列长度),那么您的序列将是“b”,这是重复的,因此它应该返回true。非常抱歉。我在测试环境中确实遇到了复制粘贴错误。我会继续测试,结果可能会把你的这个a.投得更高。。。。
[“a”、“b”、“c”、“d”、“e”、“c”、“d”、“e”、“c”、“d”、“e”、“c”]
console.log(检查序列(数组,4))的预期结果是什么
[“a”、“b”、“c”、“d”、“e”、“c”、“d”、“e”、“c”、“d”]
控制台日志的预期结果(检查序列(数组,4))
以及
console.log(检查序列(数组,5))?我明白了,你把我带到那里了。。。
[“c”、“d”、“e”、“c”、“d”、“e”、“c”]
中的重叠将导致大小为4的结果为true,大小为5的结果为true