0

JavaScript で 2 つの配列を関連付ける最良の方法について質問があります。items配列の最初の数字は、 promos配列の親 ID としても機能するアイテム ID を示します。

var items = [
    [1, 'ZAPA BAR', '50.081809, 14.43036],
    [2, 'SUN Restaurant', 50.079809, 14.44436],
    [3, 'Jazz Club', 50.068809, 14.432336]
]

var promos = [
    [1, 'HAPPY HOURS']
]

いくつかのJavaScript関数を探していましたが、意図した結果が得られるものは見つかりませんでした-ZAPA BARにはHAPPY HOURSがあります。

GPS 座標などの配列内の他の要素ではなく、各行の最初の数字 (アイテム ID) のみを比較するように JavaScript を作成する方法。

3 つよりもはるかに多くの項目があるため、ソリューションは高速である必要があります。

ありがとう!

4

3 に答える 3

0

データの量によっては、データベースが賢明な選択になる場合があります。

javascript配列には配列内のアイテムを識別するために独自に使用されているため、それぞれにIDを指定した理由はよくわかりません。

したがって、現在 2 つの ID があります。

items[0] = [1, 'ZAPA BAR', 50.081809, 14.43036]

プロモーションの名前が一意である場合は、次のことを試してください。

// WARNING: I've not tested the code, may have slipped up somewhere

var items = [
    ['ZAPA BAR', 50.081809, 14.43036],
    ['SUN Restaurant', 50.079809, 14.44436],
    ['Jazz Club', 50.068809, 14.432336]
]

var promos = {
    'HAPPY HOURS': [0]
};

function itemsWithPromo(promo) {
    var outputItems = [];
    promos[promo].forEach(function(itemID) {
        outputItems.push(items[itemID]);
    });
    return outputItems;
}

var itemsWithHappyHours = itemsWithPromo('HAPPY HOURS')
// itemsWithHappyHours = [['ZAPA BAR', '50.081809, 14.43036]]

または、配列形式のように、アイテムをオブジェクトにすることもできます。各値の意味を推測しているだけです:)

于 2013-03-28T15:32:54.223 に答える
0
var items = [
    [1, 'ZAPA BAR', 50.081809, 14.43036],
    [2, 'SUN Restaurant', 50.079809, 14.44436],
    [3, 'Jazz Club', 50.068809, 14.432336]
];

var promos = [
    [1, 'HAPPY HOURS']
];

var itemsLength = items.length;
var promosLength = promos.length;
for(var i = 0; i < itemsLength; i++){
    for (var j = 0; j < promosLength; j++){
        if (items[i][0] == promos[j][0]){
            console.log(items[i][1] + ' has ' + promos[j][1]);   
        }
    }
}

Fiddle: http://jsfiddle.net/W7HGX/1/

于 2013-03-28T15:28:28.043 に答える
0

データをオブジェクト項目に変換してから、キー値を尋ねることができます:

var items = {
  '1':{name:'ZAPA BAR',lt:50.081809,lg:14.43036},
  '2':{name:'SUN Restaurant',lt:50.081809,lg:14.44436}
};

var promos = {
     '1': {name:'HAPPY HOURS'}
};

そして、簡単に比較できます:

for(var val in items){
  console.log(items[val].name); // return the name
  console.log(val); // return the id which you can and check in promos (promos[val].name)
}
于 2013-03-28T15:30:15.210 に答える