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

Is there a single function to check an array contains another array?

本文关键字:是否 数组 另一个 一个 包含 有一个 函数 检查      更新时间:2023-09-26
[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

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

没有,但是你可以创建一个:

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) {
    ...
}