【问题标题】:How to transform JSON keys into value如何将 JSON 键转换为值
【发布时间】:2016-01-14 15:14:17
【问题描述】:

我想转换以下格式 JSON:

{
    id1: value1,
    id2: value2
    id3: value3,
    ...
} 

进入

[    
    { id: 'id1', value: 'value1' },
    { id: 'id2', value: 'value2' },
    { id: 'id3', value: 'value3' },
    ...
]

什么是快速方便的? 有什么方法可以为此使用 underscore.js。 提前谢谢你。

【问题讨论】:

    标签: javascript arrays json object


    【解决方案1】:

    可以使用下划线提供的map方法。

      var input = {
        "id1": "value1",
        "id2": "value2"
      };
    
      var output = _.map(input, function (value, key) {
        return {id: key, value: value};
      });
    

    【讨论】:

    • 是的。实际上我正在使用下划线并且它有效..谢谢:)
    【解决方案2】:

    类似:

    var arr = Object.keys(obj).map(k => ({id:k, value:obj[k]}));
    

    不需要下划线 ;-) 如果你不使用 babel 或类似的东西,你可能需要写:

    var arr = Object.keys(obj).map(function (k) { return {id:k, value:obj[k]};});
    

    【讨论】:

      【解决方案3】:

      用户如下:

      var arr = [];
      
      var obj = {
          id1: "42",
          id2: "hello",
          id3: 6,
      }
      
      for (var i in obj) {
          arr.push({id: i, value: obj[i]});
      }
      

      或者:

      Object.keys(obj).map(function(value, index) {
         return {id: value, value: obj[value]}
      })
      

      【讨论】:

        【解决方案4】:

        你不能用parse它吗:

        var object = JSON.parse(jsonString);
        

        如果这不能产生所需的结果,那么只需遍历您的字符串并手动添加键。

        【讨论】:

          【解决方案5】:

          您应该使用Object.prototype.hasOwnProperty 来确保您只添加直接在obj 上设置的键:

          var arr = [];
          for (var key in object) {
              if (object.hasOwnProperty(key)) {
                  arr.push({ id: key, value: object[value] });
              });
          }
          

          【讨论】:

            【解决方案6】:

            使用下划线,你可以用 map 方法做到这一点:

            var obj = {
                id1: 'value1',
                id2: 'value2',
                id3: 'value3',
            }
            
            //with underscore, transforming the array
            _.map(obj, function(value,key){
                return({
                id: key.toString(),
                value: value
              })
            })
            //obj = Object {id1: "value1", id2: "value2", id3: "value3"}
            

            这是一个要测试的 jsfiddle

            Underscore map

            【讨论】:

              【解决方案7】:

              使用下划线库有一种简单有效的方法。 请尝试一下:

              _.map({id1: value1, id2: value2}, function(value, key) {
                  return {id: key, value: value};
              });
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2020-08-30
                • 2015-04-23
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-10-17
                • 2020-07-11
                • 2022-08-17
                相关资源
                最近更新 更多