2013-04-24 48 views
2
[1,2,3].CONTAINS([1,2]) ==> true 
[1,2,3].CONTAINS([1,2,3,4]) ==> false 

是否有单个函数来检查数组是否包含另一个数组?

{a:1,b:2,c:3}.HASKEYS([a,b]) ==> true 
{a:1,b:2,c:3}.HASKEYS([a,b,c,d]) ==> false 

有一个函数来检查数组包含另一个数组?

+1

+1,因为这个问题没有问题。我不相信有一个准备好的,你会更好地写自己的。 – ericosg 2013-04-24 05:25:10

回答

4

没有,但你可以做一个:

Array.prototype.contains = function(other) { 
    for (var i = 0; i < other.length; i++) { 
     if (this.indexOf(other[i]) === -1) return false; 
    } 

    return true; 
} 

如果为了事项:

Array.prototype.contains = function(other) { 
    var broken; 

    if (!other.length) return true; 

    for (var i = 0; i < this.length - other.length + 1; i++) { 
     broken = false; 

     for (var j = 0; j < other.length; j++) { 
      if (this[i + j] !== other[j]) { 
       broken = true; 
       break; 
      } 
     } 

     if (!broken) return true; 
    } 

    return false; 
} 

另一个功能是相似的,所以我要把它留给你来完成:

Object.prototype.has_keys = function(keys) { 
    ... 
} 
+0

这个问题可能不够详细,但是从这个问题来看,我期待“[1,2,3] .contains([2,1])”应该返回false。你的实现使它返回true。 – 2013-04-24 05:32:02

+0

@TimothéeGroleau:在这种情况下,请参阅我的编辑。 – Blender 2013-04-24 05:37:51

+0

很好完成@Blender,我认为在那里需要另一个循环来检测其他[0]的所有事件。否则,以下返回false:“[1,2,3,2,1] .contains([2,1])” – 2013-04-24 05:45:34

相关问题