Javascript数组关联

时间:2013-03-28 15:22:12

标签: javascript arrays

我对javascript中两个数组的最佳联合方式有疑问。 在 items 数组中,第一个数字表示项目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有着快乐的小时。

如何使javascript仅比较每行中的第一个数字(项目ID)而不是像GPS协调那样比较数组中的其他元素。

解决方案应该很快,因为会有比3个更多的项目。

谢谢!

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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)
}

答案 2 :(得分:0)

根据数据量的不同,数据库可能是明智的选择。

我不太清楚你为什么给每个ID作为一个javascript数组,它有自己用于识别数组中的项目。

所以目前你有两个ID:

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

如果Promos的名称是唯一的,那么可以试试这个:

// 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,就像数组一样,我只是猜测每个值的含义:)