我对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个更多的项目。
谢谢!
答案 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]);
}
}
}
答案 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,就像数组一样,我只是猜测每个值的含义:)