【问题标题】:How can i convert Object keys to an array of elements that are number of times the key value in Javascript? [duplicate]如何将对象键转换为 Javascript 中键值倍数的元素数组? [复制]
【发布时间】:2020-06-21 20:12:55
【问题描述】:

例如

obj = {a:2, b:3, c:1}

转换后的数组是:

['a','a','b','b','b','c']

【问题讨论】:

    标签: javascript arrays algorithm object data-structures


    【解决方案1】:

    获取条目并使用所需长度的数组获取平面地图,并用键填充数组。

    const
        object = { a: 2, b: 3, c: 1 },
        result = Object
            .entries(object)
            .flatMap(([key, value]) => Array(value).fill(key));
    
    console.log(result);

    【讨论】:

      【解决方案2】:

      您可以使用reduce

      const obj = {a:2, b:3, c:1};
      
      const res = Object.keys(obj).reduce((arr, key) => {
        return arr.concat( new Array(obj[key]).fill(key) );
      }, []);
      
      console.log(res); // ["a","a","b","b","b","c"]

      说明:

      • Object.keys() 返回一个包含所有键的数组:["a", "b", "c"]

      • 然后我们用reduce 循环遍历它们,同时我们构建了一个数组。对于每个键,我们创建一个与值长度相同的新数组,并用键(ab...)填充它。

      • 然后我们将它们与concat 连接在一起。

      【讨论】:

        【解决方案3】:

        试试:

        let obj = { a:2, b:3, c:1 }
        let newObj = [];
        
        for (var key in obj) {
          while (obj[key]) {
            newObj.push(key);
            obj[key]--;
          }
        }
        
        console.log(newObj);
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-07
        • 2020-11-30
        • 2019-09-22
        • 2018-09-11
        • 1970-01-01
        相关资源
        最近更新 更多