JSON数据重组

第一个:

{
  p: "category",
  category1: "001",
  name1: "100",
  category2: "001",
  name2: "100",
  category3: "001",
  name3: "100",
  category12: "001",
  name12: "100",
}

第二个value对应上面的nameX

{
  p: "category",
  category: [
    {
      value: "001",
      name: "100"
    },
    {
      value: "001",
      name: "100"
    },
    {
      value: "001",
      name: "100"
    },
    {
      value: "001",
      name: "100"
    }
  ]
}

如何将第一个转换成第二个?

阅读 4.6k
3 个回答
var obj = {p: "category",category : []};
var src = {
  p: "category",
  category1: "001",
  name1: "100",
  category2: "001",
  name2: "100",
  category3: "001",
  name3: "100",
  category12: "001",
  name12: "100",
};

for(var key in src){
    if(/category/.test(key)){
        obj.category.push({
            value : src[key],
            name : src['name' + key.match(/\d+/)[0]]
        });
    }
}
var list={
  p: "category",
  category1: "001",
  name1: "100",
  category2: "001",
  name2: "100",
  category3: "001",
  name3: "100",
  category12: "001",
  name12: "100",
}
var newList={p:list.p,category:[]};
var key=Object.keys(list);
key.shift();
for(var i=0;i<key.length;i+=2){
  newList.category.push({
    value:list[key[i]],
    name: list[key[i+1]]
  });
}
console.log(newList)
function formate(ob){

        var newObject = {};
        newObject.p = ob.p;
        newObject.category = [];
        var newArry =[];
        for(var i in ob){
            if(i!=="p"){
                newArry.push(ob[i]);
            }
        }

        //console.log(newArry);

        for(var j=0;j<(newArry.length/2);j++){
            var object = {};
            
            object.value = newArry[j];
            object.name = newArry[j+1];

            newObject.category.push(object);
        }
        return newObject;
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题