2

私は2つの配列を持っています:

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

いずれかの値が入っているかどうかを確認したい(True または False)。labelsservices

jqueryを使用してこれをアーカイブする最良の方法は何ですか?

編集1:

はい、質問中に間違えservicesました。JSON オブジェクトです。

アップデート

Bregi の 2 番目のソリューションは、私が必要としていたものです。.some目的を果たしています。

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

3 に答える 3

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 で 2 つの多次元配列を比較する

于 2013-09-19T20:17:02.063 に答える
1

someArray メソッドを使用します (ただし、レガシー環境では shim が必要になる場合があります)。

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 に答える