【问题标题】:angularjs - javascript - Convert object values from string to array structureangularjs - javascript - 将对象值从字符串转换为数组结构
【发布时间】:2016-12-07 21:20:59
【问题描述】:

我在研究json convert with js的一些复杂案例,遇到这样的情况:

我知道了:

{
  "page": "POST,PUT:122",
  "news": "PUT"
}

我想转换成这个:

{
  "page": {
    "POST": [
      "POST"
    ],
    "PUT": 122
  },
  "news": {
    "PUT": [
      "PUT"
    ]
  }
}

我已经在使用@RomanPerekhrest 提供的这个出色的解决方案对还原案例进行此转换,我想恢复相同的结构,但我尝试了几种方法都没有成功,Roman 的解决方案:

var obj = {
  "page": {
    "POST": [
      "POST"
    ],
    "PUT": 122
  },
  "news": {
    "PUT": [
      "PUT"
    ]
  }
};

Object.keys(obj).forEach(function (k) {
  var innerKeys = Object.keys(obj[k]), items = [];
  innerKeys.forEach(function(key) {
    items.push((Array.isArray(obj[k][key]))? key : key + ":" + obj[k][key]);
  });
  obj[k] = items.join(",");
});

console.log(JSON.stringify(obj, 0, 4));

【问题讨论】:

    标签: javascript arrays json string object


    【解决方案1】:

    var obj = {
      "page": "POST,PUT:122",
      "news": "PUT"
    };
    var rez={};
    Object.keys(obj).forEach(function(key){
     obj[key].split(",").forEach(function(value){
       var item = value.split(":");
       var obj=rez[key] || {};
       if (item.length>1){     
         obj[item[0]]=isNaN(Number(item[1])) ? item[1] : Number(item[1]);
         rez[key]=obj;
       }else{
          obj[item[0]]=[item[0]];
          rez[key]=obj;
       }
     });
    });
    console.log(rez);

    【讨论】:

    • 这似乎是正确的@VladuIonut,但我需要'122'作为一个int(122)而不是一个字符串(“122”)。 :)
    • 所有值都是整数?
    猜你喜欢
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 2016-03-09
    • 2013-01-18
    • 2017-08-24
    • 2014-03-12
    相关资源
    最近更新 更多