【问题标题】:Javascript: Convert map to array of objectsJavascript:将地图转换为对象数组
【发布时间】:2020-12-22 08:20:43
【问题描述】:

我是一般编程新手,希望将 Javascript 映射转换为对象数组。例如,将输入常量转换为输出常量:

const input = new Map([
   [1, 'one'],
   [2, 'two'],
   [3, 'three'],
]);

const output = [
    { number: 1, letter: 'one' },
    { number: 2, letter: 'two' },
    { number: 3, letter: 'three' }
];

这可能是一个简单的代码,但我找不到任何参考。有什么建议吗?谢谢!

【问题讨论】:

    标签: javascript arrays dictionary object


    【解决方案1】:

    这样的事情可能会奏效:

    const output = Array.from(input).map(([number, letter]) => ({number, letter}));
    

    基本思路是将映射input转换为数组,然后映射每个条目。

    【讨论】:

      【解决方案2】:

      使用... 运算符和map 方法。

      const input = new Map([
         [1, 'one'],
         [2, 'two'],
         [3, 'three'],
      ]);
      
      const output = [...input].map(([number, letter]) => ({number, letter}))
      
      console.log(output);

      【讨论】:

        【解决方案3】:

        你不必转换成任何东西。 Map 有一个 forEach 方法。您可以使用Map.protoType.forEach 执行以下操作,

        const input = new Map([
           [1, 'one'],
           [2, 'two'],
           [3, 'three'],
        ]);
        
        let output = [];
        
        input.forEach((letter, number) => {
          output.push({number, letter});
        })
        
        console.log(output);

        【讨论】:

        • 赞成,因为与其他解决方案相比,这更节省空间。
        【解决方案4】:

        您可以通过使用 For-of 迭代对 Map 进行迭代并将对象推入一个新数组来实现。参考for-of operation for Map

        var arr = [];
        for(var [key, val] of input) {
          arr.push({ integer: key, letter: val})
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-22
          • 2017-02-16
          • 1970-01-01
          • 2020-06-29
          • 1970-01-01
          • 2021-05-07
          相关资源
          最近更新 更多