javascript - json 操作求解

查看:95
本文介绍了javascript - json 操作求解的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我想把如下json 重组为下面的格式 应该这么处理 求给个思路。

顺便说下 spec 里的数据个数是不定的 可能是一个 可能是3个 5个

[
  {
    "id": "5", 
    "spec": [
      {
        "idspec": 1, 
        "spec": "颜色分类", 
        "idspecvalue": 5, 
        "specvalue": "黄色"
      }, 
      {
        "idspec": 2, 
        "spec": "服装尺码", 
        "idspecvalue": 7, 
        "specvalue": "XXL"
      }
    ]
  }, 
  {
    "id": "6", 
    "spec": [
      {
        "idspec": 1, 
        "spec": "颜色分类", 
        "idspecvalue": 8, 
        "specvalue": "红色"
      }, 
      {
        "idspec": 2, 
        "spec": "服装尺码", 
        "idspecvalue": 3, 
        "specvalue": "L"
      }
    ]
  }
]

变成如下

[
  {
    "title": "颜色分类", 
    "spec": [
      {
        "id": 5, 
        "idspecvalue": 5, 
        "specvalue": "黄色"
      }, 
      {
        "id": 6, 
        "idspecvalue": 8, 
        "specvalue": "红色"
      }
    ]
  }, 
  {
    "title": "服装尺码", 
    "spec": [
      {
        "id": 5, 
        "idspecvalue": 7, 
        "specvalue": "xxl"
      }, 
      {
        "id": 6, 
        "idspecvalue": 3, 
        "specvalue": "l"
      }
    ]
  }
]

解决方案

function geTyourData(data) {
    let json = {};
    let index = 0;
    let res = test_data.reduce(function(prev, item) {
        let id = item.id;
        item.spec.forEach(function(inner) {
            let obj = {
                id: id,
                idspecvalue: inner.idspecvalue,
                specvalue: inner.specvalue
            };
            let title = inner.spec;
            json[title] ? prev[json[title] - 1].spec.push(obj) : json[title] = ++index && prev.push({
                title: title,
                spec: [obj]
            })
        });
        return prev
    }, [])
    return res
}
console.log(JSON.stringify(geTyourData(test_data)))
[{"title":"颜色分类","spec":[{"id":"5","idspecvalue":5,"specvalue":"黄色"},{"id":"6","idspecvalue":8,"specvalue":"红色"}]},{"title":"服装尺码","spec":[{"id":"5","idspecvalue":7,"specvalue":"XXL"},{"id":"6","idspecvalue":3,"specvalue":"L"}]}]

这篇关于javascript - json 操作求解的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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