【问题标题】:how to add +1 after two var is true如何在两个 var 为真后添加 +1
【发布时间】:2012-11-06 04:01:16
【问题描述】:

只是想知道是否有两个 var 为 var store 添加 +1 是真的?

使用 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++

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

【问题讨论】:

  • if/else 和 switch 的性能表现相同。
  • 在你的 switch 语句 buyer="" 但在 switch 中你检查buyer == 1 一个是字符串,另一个是 int。
  • @Hunt - Var store = 0 --> SyntaxError: Unexpected identifier
  • 这应该在函数中吗?就像@ajon 所说的那样,您正在设置buyer,然后立即根据它执行条件。

标签: javascript html if-statement switch-statement


【解决方案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]

【讨论】:

  • 抱歉,我不明白如何使用您建议的代码。你能告诉我更多细节吗?。
  • @Hunt 添加完整示例,希望对您有所帮助
【解决方案2】:

由于您的买家和卖家都是数字枚举,因此您可以将它们的值组合用作商店的键。如果您希望 buyer1 &amp; seller2 去与 buyer2 &amp; 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
*/

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 2013-12-08
      • 2011-07-01
      • 2019-06-01
      相关资源
      最近更新 更多