0

我对 javascript 中两个数组的最佳关联方式有疑问。在items数组中,第一个数字表示 item id 也用作promos数组中的父 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。

如何使 javascript 仅比较每行中的第一个数字(项目 id)而不是数组中的其他元素,如 GPS 坐标。

解决方案应该很快,因为项目将多于三个。

谢谢!

4

3 回答 3

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]);   
        }
    }
}

小提琴: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 回答
0

根据数据量,数据库可能是一个明智的选择。

我不太确定为什么您给每个 ID 都赋予了一个 javascript 数组,因为它自己用于识别数组中的项目。

所以目前你有两个 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]]

或者您甚至可能希望将项目也以数组形式放入 Object 中,我只是在猜测每个值的含义:)

于 2013-03-28T15:32:54.223 回答