有没有办法检查数组是否包含多个值?

时间:2016-01-07 17:45:16

标签: javascript arrays netbeans arraylist integer

例如,如果我需要我的代码在数组列表中包含某组数字以便发生什么呢?例如这个数组[1,3,4,5,9]。有什么方法可以检查并查看一个数组是否同时包含所有这些整数并以相同的顺序?

4 个答案:

答案 0 :(得分:1)

var arraySearch = function (subArray,array ) {
    var i = -1;
    return subArray.every(function (v) {
            if(i != -1) {
                i++;
                return (array.indexOf(v) === i)
            }
            i = array.indexOf(v);
            return  i >= 0;
    });
};

var arr = [1,3,4,5,9];

console.log(arraySearch([4,5],arr))

答案 1 :(得分:0)

{1,3,4,5,9}不是数组。在这方面,它在Javascript中无效。

myArray = [1,3,4,5,9]是一个数组。您可以使用myArray.length检查其包含的元素数量。

  

有什么方法可以查看并查看数组是否包含所有这些内容   整数和同一顺序?

为此,您必须提供自己的一些代码并显示您首先尝试过的内容。

答案 2 :(得分:0)

<强>基本

要检查数组是否只包含一次元素, 您可以简单地检查indexOflastIndexOf是否产生完全相同的值并且大于或等于零。

var array = [1,2,3,3,3];

function isContainOnce(array,num){
    return array.indexOf(num)>=0 && array.indexOf(num)==array.lastIndexOf(num)
}

// Try it
isContainOnce(array,3); // false
isContainOnce(array,10); // false
isContainOnce(array,1); // true

现在您可以迭代检查此类元素的出现次数

function isContain(arr,sub){
   var subArray = sub.slice();
   var k = null;
   while (subArray.length>0){
     var s = subArray.shift(); // Take the first element to test
     var i = arr.indexOf(s);
     var j = arr.lastIndexOf(s);
     if (i<0 || i!=j) return false; // Does not exist once
     if (k && i-k!=1) return false; // Not in order
     k = i;
  }
  return true;
 }

检查[1,3,4,5,9,10,11,11]是否包含子数组[1,3,4,5,9],其中所有元素的顺序相同:

isContain([1,3,4,5,9,10,11,11], [1,3,4,5,9]);  // TRUE

其他情况

isContain([1,3,4,5,9,10,11,11], [5,9,10]); // TRUE
isContain([1,3,4,5,9,10,11,11], [2,3]); // FALSE
isContain([1,3,4,5,9,10,11,11], [10,11]); // FALSE because 11 occurs twice

答案 3 :(得分:-1)

如果是完全匹配的话:

{{1}}

如果你要搜索的数字是数组的子集,可能中间有额外的数字,你必须遍历元素。