0

我想在javascript中有一个函数(如果可能的话是jQuery),它允许我将一个id数组传递给一个函数,并检查是否在另一个数组中找到每个值以返回TRUE。

例如

var ids1 = [1, 6, 9, 11, 20];
var ids2 = [5, 6, 9, 11];

function check_array(ids)
{
    var search = [1, 6, 9, 11, 20];
    // do some checking here

    // if all ids are matched up return TRUE; 

    // otherwise return FALSE;
}

在这种情况下 - 第一个 var ids1 将返回 TRUE,而第二个 var ids2 将返回 FALSE。

谁能为此建议最简单/最干净的方法?

4

2 回答 2

2
function check_array(ids1, ids2) {
    return $(ids1).not(ids2).get().length === 0;
}

var ids1 = [1, 6, 9, 11, 20];
var ids2 = [5, 6, 9, 11];
console.log(check_array(ids1, ids2)); // false
console.log(check_array(ids2, ids1)); // false
var search = [1, 6, 9, 11, 20];
console.log(check_array(search, ids2)); // false
console.log(check_array(search, ids1)); // true

尽管上面的通用版本就足够了,但这正是您所要求的:

function check_array(ids) {
    var search = [1, 6, 9, 11, 20];
    return $(search).not(ids).get().length === 0;
}
var ids1 = [1, 6, 9, 11, 20];
var ids2 = [5, 6, 9, 11];
console.log(check_array(ids1)); // true
console.log(check_array(ids2)); // false
于 2013-06-25T12:59:17.917 回答
1

如果您只有数字 ID,那么这可能是最简单的方法。

[1,2,3].toString() === [1,2,3].toString() //=> true

如果要判断数组 A 中的所有 ID 是否都存在于数组 B 中(但数组 B 可能还有其他的),试试[].every

于 2013-06-25T12:58:02.013 回答