javascript - json 操作求解
本文介绍了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屋!
查看全文