angularjs-JavaScript-将对象值从字符串转换为数组结构 [英] angularjs - javascript - Convert object values from string to array structure

查看:302
本文介绍了angularjs-JavaScript-将对象值从字符串转换为数组结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在研究使用js进行json转换的一些复杂情况,并且我遇到这样的情况:

I'm studying some complex cases on json convert with js, and I have a situation like this:

我知道了:

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

我想转换为:

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

我已经使用@RomanPerekhrest的出色解决方案对转换案例进行了转换,我想获得返回相同的结构,但是我尝试了几种没有成功的方法,罗马的解决方案:

I'm already doing this conversion on a revert case with this great solution by @RomanPerekhrest, I want to get back the same structure, but I tried a few ways with no success, Roman's solution:

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));

推荐答案

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);

这篇关于angularjs-JavaScript-将对象值从字符串转换为数组结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆