【问题标题】:How can I increment a value under a dynamic key? [duplicate]如何在动态键下增加值? [复制]
【发布时间】:2018-11-12 17:43:15
【问题描述】:

我有一个动态属性名称,我想将其用作键并实现如下功能:

obj Map(KeyName)++;

意思是,将存储在键“KeyName”下的值加 1。但是这种语法不起作用。

所以我希望在调用代码 3 次后,Map(KeyName) 会返回 3。

【问题讨论】:

  • 您是 Javascript 新手吗?这看起来不像
  • @Callam 是的,我是。我是几天前开始的。在我使用 C# 之前

标签: javascript properties


【解决方案1】:

您可能正在使用 Javascript Map 类型。因此,您可以执行以下操作:

var myMap = new Map();

myMap.set("integerA", 0);
myMap.set("integerB", 0);
myMap.set("integerC", 0);

var key = "integerB";
myMap.set(key, myMap.get(key) + 1);
myMap.set(key, myMap.get(key) + 1);
myMap.set(key, myMap.get(key) + 1);

/* { "integerA" => 0, "integerB" => 3, "integerC" => 0 } */

var key = "integerC";
myMap.set(key, myMap.get(key) + 1);
myMap.set(key, myMap.get(key) + 1);
myMap.set(key, myMap.get(key) + 1);

/* { "integerA" => 0, "integerB" => 3, "integerC" => 3 } */

如果你需要一个函数,那就是:

function increment(map, key) {
    map.set(key, map.get(key) + 1);
    return map;
}

【讨论】:

    【解决方案2】:

    const obj = {}
    
    function increment(keyName) {
      obj[keyName] = obj[keyName] || 0;
      obj[keyName]++;
    }
    
    increment('keyName')
    increment('keyName')
    increment('keyName')
    
    console.log(obj)

    【讨论】:

      【解决方案3】:

      您的问题不清楚,但这里有一个可能为您提供正确语法的示例:

      var keyNameF = "foo"
      var keyNameB = "bar"
      var objMap  = {
        foo: 10,
        bar: 20
      }
      
      objMap[keyNameF]++
      objMap[heyNameB]++
      
      console.log(objMap)
      

      希望这就是你要找的。​​p>

      【讨论】:

        【解决方案4】:

        将一个对象包装到函数中,并在不同的键上多次调用增量inc,然后使用get方法打印值。

        function DynamicKey(){
        
           var keys = {};
        
           var _obj = {
             inc:function(key){
                if(!keys.hasOwnProperty(key)){
                    keys[key] = 0;
                }
                keys[key] += 1;
                return _obj;
             },
             get:function(key){
               return keys[key];
             }
           }
           return _obj;
        }
        
        var d = DynamicKey();
        d.inc('key1').inc('key1').inc('key2').inc('key3').inc('key1').inc('key2');
        console.log("key1 count => ", d.get('key1')); // 3
        console.log("key2 count => ", d.get('key2')); // 2
        console.log("key3 count => ", d.get('key3')); //  1
        

        jsFiddle 演示 - https://jsfiddle.net/4qmjofvk/1/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-04-20
          • 2016-09-21
          • 1970-01-01
          • 1970-01-01
          • 2017-11-23
          • 2019-07-03
          • 2011-05-24
          • 1970-01-01
          相关资源
          最近更新 更多