代码之家  ›  专栏  ›  技术社区  ›  jgrewal

从数组中指定键名

  •  0
  • jgrewal  · 技术社区  · 4 年前

    我似乎无法使键等于传入的名称数组的索引值的名称。

    我想做的是:

    创建名称和数字的键值,以跟踪我有多少重复的名称。

    输入/输出:

    姓名=[鲍勃,乔,吉尔,鲍勃,比尔,比尔]

    输出将是{bob:2,joe:1,jill:1,bill:2}

    我还没有得到这部分代码。目前只是想把钥匙弄对。但它应该描绘出我正在努力做的事情。

    我遇到的问题是:

    我似乎无法为集合中的每个名称创建关键点

    我最初做的是:

    myset.add({names[i]:0})

    我把它改成了一个变量 keyname 这正被分配到我的forloop下。

    这并没有改变什么。


    function solution(names) {
        const myset = new Set();
        for(let i=0; i<names.length; i++){
            let keyname = names[i];
            if(myset.has(names[i])){
                console.log("already includes");
            }
            else(
                myset.add({
                    keyname:0
                })
            )
        }
        console.log(myset);
    }
    

    Set(5) {
      { keyname: 0 },
      { keyname: 0 },
      { keyname: 0 },
      { keyname: 0 },
      { keyname: 0 }
    }
    
    1 回复  |  直到 4 年前
        1
  •  1
  •   DecPK    4 年前

    Set 是唯一值的集合。如果您正在添加一个对象,那么它将不等于任何其他对象,除非两者在引用上不相同。

    集合对象是值的集合。您可以遍历 按插入顺序排列的集合元素。集合中的值只能是

    如果您只需要计算字符串的出现次数,则可以使用“普通对象”或“映射为”进行计算:

    function solution(names) {
      const dict = {};
      
      for (let i = 0; i < names.length; ++i) {
        if (!dict[names[i]]) dict[names[i]] = 1;
        else ++dict[names[i]];
      }
    
      console.log(dict);
    }
    
    solution(["bob", "joe", "jill", "bob"]);

    function solution(names) {
      const map = new Map();
      names.forEach((name) =>
        !map.has(name) ? map.set(name, 1) : map.set(name, map.get(name) + 1)
      );
      console.log(map);
    }
    
    solution(["bob", "joe", "jill", "bob"]);
        2
  •  0
  •   Akash Khatkale    4 年前

    尝试在Javascript中使用对象。它可以存储键/值对。

    function solution(names) {
        // javascript object
        const values = {};
    
        for(let i = 0; i < names.length; i++){
            if(values[names[i]]){             
               values[names[i]] = 1;
            }else{
               values[names[i]] += 1;
            }
        }
        console.log(values);
    }