代码之家  ›  专栏  ›  技术社区  ›  John V

如何在动态键下增加值?

  •  0
  • John V  · 技术社区  · 6 年前

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

    obj Map(KeyName)++;
    

    也就是说,将1添加到键“KeyName”下存储的值。但是这种语法不起作用。

    4 回复  |  直到 6 年前
        1
  •  1
  •   Purport Tees    6 年前

    可能您使用的是Javascript映射类型。所以,你可以这样做:

    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
  •  1
  •   Callam    6 年前

    const obj = {}
    
    function increment(keyName) {
      obj[keyName] = obj[keyName] || 0;
      obj[keyName]++;
    }
    
    increment('keyName')
    increment('keyName')
    increment('keyName')
    
    console.log(obj)
        3
  •  0
  •   Blunt Jackson    6 年前

    您的问题不清楚,但下面是一个可能为您提供正确语法的示例:

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

        4
  •  0
  •   front_end_dev    6 年前

    将对象包装到函数中并调用增量 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
    

    https://jsfiddle.net/4qmjofvk/1/