基础
检查一个数组是否只包含一个元素,
您可以简单地检查indexOf 和lastIndexOf 是否产生完全相同的值并且大于或等于零。
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