【问题标题】:How can I add name to existing value pair in json如何将名称添加到 json 中的现有值对
【发布时间】:2018-02-10 11:03:28
【问题描述】:

您好,这是我的示例 json:

 {
  "2016-01-01T00:00:00Z": 1,
  "2016-02-01T00:00:00Z": 2,
  "2016-03-01T00:00:00Z": 3
}

现在我想要类似的东西

[
  {"Month":"2016-01-01T00:00:00Z", "Number": 1},
  {"Month":"2016-02-01T00:00:00Z", "Number": 2},
  {"Month":"2016-03-01T00:00:00Z", "Number": 3}
]

如何使用 JS/Jquery 做到这一点?我想把它改成上面提到的格式,因为我需要把它们放在 html table 中,我发现使用第二种格式让我的工作更容易。

【问题讨论】:

    标签: javascript jquery json html-table


    【解决方案1】:

    你可以通过以下方式做到这一点

    let obj = {
      "2016-01-01T00:00:00Z": 1,
      "2016-02-01T00:00:00Z": 2,
      "2016-03-01T00:00:00Z": 3
    };
    let result = [];
    for(element in obj){
        result.push({"Month":element, "Number": obj[element]})
    }
    
    console.log(result);

    【讨论】:

      【解决方案2】:

      您可以使用 jQuery map 函数来更改数组的格式。

      let jsonArray = {
          "2016-01-01T00:00:00Z": 1,
          "2016-02-01T00:00:00Z": 2,
          "2016-03-01T00:00:00Z": 3
      };
      
      var result = $.map(jsonArray, function (item, key) {
          return {
              Month: key,
              Number: item
          };
      });
      

      【讨论】:

        【解决方案3】:

        您可以使用Object.keys 获取密钥并使用Array#map 映射新对象。

        var object = { "2016-01-01T00:00:00Z": 1, "2016-02-01T00:00:00Z": 2, "2016-03-01T00:00:00Z": 3 },
            result = Object.keys(object).map(function (k) {
                return { Month: k, Number: object[k] };
            });
        
        console.log(result)
        .as-console-wrapper { max-height: 100% !important; top: 0; }

        【讨论】:

          【解决方案4】:
              var object1 =  {
                "2016-01-01T00:00:00Z": 1,
                "2016-02-01T00:00:00Z": 2,
                "2016-03-01T00:00:00Z": 3
              };
          
              var finalArray = [];
          
              for (var key in object1) {
                if (p.hasOwnProperty(key)) {   // p.hasOwnProperty this will check for duplicate key
                      finalArray.push({
                      “Month” : key,
                      “Number”:p[key]
                  });
                }
              }
          
          console.log(finalArray)
          

          【讨论】:

            【解决方案5】:

            另一种选择可能包括使用Object.keysmap 这样......

            let obj = {
              '2016-01-01T00:00:00Z': 1,
              '2016-02-01T00:00:00Z': 2,
              '2016-03-01T00:00:00Z': 3
            }
            
            let arr = Object.keys(obj).map(key => {
                return {'Month': key, 'Number': obj[key]}
            });
            

            JSFiddle demo

            【讨论】:

              【解决方案6】:

              旅行时使用$.each

               a = {
                    "2016-01-01T00:00:00Z": 1,
                    "2016-02-01T00:00:00Z": 2,
                    "2016-03-01T00:00:00Z": 3
                  }
              
              var b = []; 
              $.each( a, function( key, value ) {
                 b.push({mounth: key ,number: value });
              });
              

              输出将是:

              0:{mounth: "2016-01-01T00:00:00Z", number: 1}
              1:{mounth: "2016-02-01T00:00:00Z", number: 2}
              2:{mounth: "2016-03-01T00:00:00Z", number: 3}
              

              【讨论】:

                猜你喜欢
                • 2019-04-12
                • 2011-05-03
                • 2018-04-09
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-11-12
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多