2

我有 2 个数组:

labels = ["water", "sever", "electricity"];
services = [0:[0:"1",1:"sever"], 1:[0:"3",1:"park"], 3:[0:"4",1:"gas"]];

我想检查是否有任何值(labelsservices或假)。

使用 jquery 存档的最佳方法是什么?

编辑1:

是的,我在提问时犯了一个错误,services是 JSON 对象。

更新

Bregi 的第二个解决方案是我所需要的。.some正在实现目的。

var isInAny = labels.some(function(label) {
  return services.some(function(s) {
    return s[1] == label;
  });
});
4

3 回答 3

1

使用someArray 方法(尽管您可能需要为遗留环境填充它):

var isInAny = labels.some(function(label) {
    // since we don't know whether your services object is an actual array
    // (your syntax is invalid) we need to choose iteration/enumeration
    if (typeof services.length == "number") {
        for (var i=0; i<services.length; i++)
            if (services[i][1] == label)
                return true;
    } else {
        for (var p in services)
            if (services[p][1] == label)
                return true;
    }
    return false;
});

如果services真的是一个数组,你也可以使用

var isInAny = labels.some(function(label) {
    return services.some(function(s) {
        return s[1] == label;
    });
});
于 2013-09-19T20:19:15.277 回答
1

假设那些应该是大括号而不是括号services

labels.some(function (label) {
    for (var x in services) {
        if (services.hasOwnProperty(x)) {
            return services[x][1] === label;
        }
    }
});

http://jsfiddle.net/WwsLk/

于 2013-09-19T20:16:37.897 回答
1

这里经常回答这个问题。你可能想看看^^

但是,给你一个答案:在服务上使用 $.each 以从那里生成一个带有字符串的新数组,并将其与标签数组进行比较。

这应该让你有个想法: 在 javascript 中比较两个多维数组

于 2013-09-19T20:17:02.063 回答