我想知道是否可以在一个数组中搜索连续的多个项目,类似于下面的内容。我已经用单独的包含完成了,但这不允许我判断这些元素是在一行还是在彼此附近。
数组未排序,数字必须按照定义的顺序排列。接近连续,特别是3.所以(12,33,45,34)内搜索的(23,34,45)将是错误的。
由于
var num = [];
num.push(12,23,34,45,56,67,78,89,90);
if(num.includes(23,34,45)){
print('found');
}
答案 0 :(得分:1)
使用ES6 Set()功能的另一种方法:
var arr = [12,23,34,12,45,56,67,78,89,90];
var set = new Set();
arr.forEach(function(i){ set.add(i) });
var foundCount = 0;
var func = function(a){
a.forEach(function(item) {
var oldLength = set.size;
set.add(item);
var newLength = set.size;
if(oldLength === newLength) {
foundCount++;
}
});
console.log('found ' + foundCount)
}
var arr2 = [12, 34, 45];
func(arr2);

答案 1 :(得分:0)
这有效,我希望我能正确理解你的问题。
function foo(num1, num2, num3, arr) {
var exists = false;
for(var i = 0; i < arr.length; i++) {
if(arr[i] == num1 && arr[i+1] == num2 && arr[i+2] == num3) {
exists = true;
}
}
console.log(exists);
}
var array = [12,23,34,45,56,67,78,89,90];
foo(23,34,45,array);