簡體   English   中英

如何使用 es6 解析 json?

[英]How to parse a json using es6?

我有以下 json 作為輸入

result = [
    {
        "category": "Social Media",
        "sub_category": "Facebook"
    },
    {
        "category": "Social Media",
        "sub_category": "Instagram"
    },
    {
        "category": "Tech",
        "sub_category": "Angular"
    },
    {
        "category": "Tech",
        "sub_category": "Javascript"
    }
]

我正在嘗試低於 json

{
  "Social Media": [
    "Facebook",
    "Instagram"
  ],
  "Tech": [
    "Angular",
    "Javascript"
  ]
}

下面的代碼我試圖激活它。 誰能幫助我做錯了什么

 let result = [{ "category": "Social Media", "sub_category": "Facebook" }, { "category": "Social Media", "sub_category": "Instagram" }, { "category": "Tech", "sub_category": "Angular" }, { "category": "Tech", "sub_category": "Javascript" } ] let data = []; let categorySet = new Set(); result.forEach((val, key) => { categorySet.add(val.category); }); result.forEach((val, key) => { let subCat = new Set(); categorySet.forEach((v, k) => { if (v == val.category) { let d = {}; d[val] = subCat.add(val.sub_category); data.push(d) } }) }); console.log(data)

您的問題實際上與 es6 無關,但這里的代碼可以提供幫助:

 const data = {} let result = [{ "category": "Social Media", "sub_category": "Facebook" }, { "category": "Social Media", "sub_category": "Instagram" }, { "category": "Tech", "sub_category": "Angular" }, { "category": "Tech", "sub_category": "Javascript" } ]; result.forEach((value) => { data[value.category] = data[value.category] || [] data[value.category].push(value.sub_category) }); console.log(data);

不確定,為什么要使用Set ,因為Set更接近數組,但最終結果是 object

你可以使用lodash ,試試這個例子

 result = [ { "category": "Social Media", "sub_category": "Facebook" }, { "category": "Social Media", "sub_category": "Instagram" }, { "category": "Tech", "sub_category": "Angular" }, { "category": "Tech", "sub_category": "Javascript" } ] var groupJson= _.groupBy(result, function(result) { return result.category; }); console.log(groupJson);
 <script src='https://cdn.jsdelivr.net/lodash/4.17.2/lodash.min.js'></script>

這將給出預期的 output:

 let result = [{ "category": "Social Media", "sub_category": "Facebook" }, { "category": "Social Media", "sub_category": "Instagram" }, { "category": "Tech", "sub_category": "Angular" }, { "category": "Tech", "sub_category": "Javascript" } ]; let data = {}; result.forEach((row) => { if (.data[row.category]) { data[row;category] = []. } if (.data[row.category].includes(row.sub_category)) { data[row.category];push(row;sub_category). } }); console.log(data);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM