【问题标题】:json object split into two json objectsjson 对象拆分为两个 json 对象
【发布时间】:2014-10-03 08:58:23
【问题描述】:

我有这个 JSON 对象

{1: "test projekt", 4: "Second Project", 
 5: "Third Project", 6: "Fourth Project", 
 7: "5th one", 8: "6th one dude", 
 uhash: "7021a11332508b6e30d3b6d3e95180398228b0e4010fc3f05db81e80"}

我想把它拆分成:

{1: "test projekt", 4: "Second Project", 
 5: "Third Project", 6: "Fourth Project", 
 7: "5th one", 8: "6th one dude"}

{uhash: "7021a11332508b6e30d3b6d3e95180398228b0e4010fc3f05db81e80"}

如何在 js 中做到这一点?

【问题讨论】:

    标签: javascript json


    【解决方案1】:

    类似的东西?

    var secondObj = {uhash: firstObj.uhash};
    delete firstObj.uhash;
    

    对于更复杂的内容,您可以使用下划线:underscorejs。看看 groupBy 或 map。取决于你到底需要什么。

    【讨论】:

      【解决方案2】:

      for ... in 循环将遍历对象键。请务必使用hasOwnProperty 方法对其进行限制,否则for ... in 将找到对象的所有继承键。一旦可以迭代对象,您需要做的就是检查键并填充另外两个对象。

      var numbers = {},
          uhash   = {},
          prop    = '';
      
      for (prop in json) {
          if (json.hasOwnProperty(prop)) {
      
              if (!isNaN(prop)) {
                  numbers[prop] = json[prop];
              } else {
                  uhash[prop] = json[prop];
              }
      
          }
      }
      

      【讨论】:

        【解决方案3】:

        操作 JSON 的最简单方法是将其解析为对象,操作对象,然后从对象创建 JSON:

        var o = JSON.parse(json);
        
        var o2 = { uhash: o.uhash };
        delete o.uhash;
        
        var json1 = JSON.stringify(o);
        var json2 = JSON.stringify(o2);
        

        注意:旧版浏览器不支持JSON object,例如IE 7.

        【讨论】:

        • 感谢您展示完整的方式,我没有使用 stringify,现在我使用了。不错!
        【解决方案4】:

        这可能会有所帮助

        function popAttributeFromData (attrs, data) {
          for (var key in data) {
            if(key === attrs) {
              var result = {
                attrs: data[attrs]
              };
              delete data[attrs];
              return result;
            }
          }
          return null;
        }
        

        它从数据中迭代keys直到键与传递的参数attrs匹配。

        这是结果

        PLAYGROUND

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-12-18
          • 2016-09-05
          • 1970-01-01
          • 2017-05-06
          • 1970-01-01
          • 1970-01-01
          • 2016-06-02
          相关资源
          最近更新 更多