1

只是想知道无论如何添加+1到带有两个var的var store是真的吗?

使用 switch 或 if/else 哪个更好

Var store = 0
Var store1 = 0
Var store2 = 0

var buyer = "";
var seller = "";

switch(buyer){
case 1: buyer = buyer1;break;
case 2: buyer = buyer2;break;
}

switch(seller){
case 1:seller = seller1;break;
case 2:seller = seller2;break;
}

if(buyer == buyer1 && seller == seller1){
store1++
}
if(buyer == buyer2 && seller == seller2){
store2++
}
if(buyer == buyer1 && seller == seller2){
store0++
}

继续以这种方式保持我的代码工作或以任何其他方式以更好的方式改进我的代码?

就像switch(buyer)"case1" switch(seller)"case2"那时store0++ switch(buyer)"case2" switch(seller)"case2"_store2++

现在更简单的方法,请帮助

4

3 回答 3

1

您可以通过将值存储在地图中来简化代码。

主意

store0 = store0 + m[buyer][seller][0]
store1 = store1 + m[buyer][seller][1]
store2 = store2 + m[buyer][seller][2]

m = {
  <value_buyer1>: {
    <value_seller1>: [0, 1, 0],
    ...
  },
  ...
}

完整版本

var store = 0
var store1 = 0
var store2 = 0

var buyer = "";
var seller = "";

switch(buyer){
  case 1: buyer = buyer1;break;
  case 2: buyer = buyer2;break;
}

switch(seller){
  case 1:seller = seller1;break;
  case 2:seller = seller2;break;
}

m = {};
m[buyer1] = {};
m[buyer1][seller1] = [0, 1, 0];
m[buyer1][seller2] = [1, 0, 0];
m[buyer2] = {};
m[buyer2][seller1] = [0, 0, 0];
m[buyer2][seller2] = [0, 0, 1];

store0 = store0 + m[buyer][seller][0]
store1 = store1 + m[buyer][seller][1]
store2 = store2 + m[buyer][seller][2]
于 2012-11-06T04:10:14.193 回答
0

因为您的买家和卖家都是数字枚举,所以您可以使用它们的值的组合作为商店的键。buyer1 & seller2如果您想去不同的商店,这不起作用buyer2 & seller1,但他们去同一家商店,请考虑:

var store_count = {};

if (typeof store_count[buyer+seller] === "undefined")
   store_count[buyer+seller] = 0;

store_count[buyer+seller]++;

另一个如何实现、调用的示例以及一些内部文档:

var store_count = {};

function updateStoreCount(buyer,seller){
   // initialize
   if (typeof store_count[buyer+seller] === 'undefined')
      store_count[buyer+seller]=0;

   store_count[buyer+seller]++;

   return store_count;
}

// Example Call:
updateStoreCount(1,2);


/* 
   store[2] == buyer1 and seller1
   store[3] == buyer1 and seller2  -and-  buyer2 and seller1
   store[4] == buyer2 and seller2
*/
于 2013-09-21T16:15:53.467 回答
0

如果买家和卖家都是数字索引,我不明白如何切换是必要的。

var stores = [0,0,0];

function update(buyer, seller){

    if(buyer==1 && seller==2) stores[0]++;
    if(buyer==1 && seller==1) stores[1]++;
    if(buyer==2 && seller==2) stores[2]++;
}
于 2013-09-21T16:41:02.540 回答