[英]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.