请帮助我在javascript中对这些对象进行自定义,我有点卡住了。
对象
var stocks = [
{
"size": "2",
"count": 5,
"store": {
"id": 3,
"title": "Belconnen"
}
},
{
"size": "3",
"count": 4,
"store": {
"id": 4,
"title": "Canberra"
}
},
{
"size": "4",
"count": 4,
"store": {
"id": 5,
"title": "Bankstown"
}
},
{
"size": "5",
"count": 5,
"store": {
"id": 4,
"title": "Canberra"
}
}];
预期输出
{3:{"sizes": {2: 3}}},
{4:{"sizes": {3: 3, 5: 3}}},
{5:{"sizes": {4: 3}}}
到目前为止我的代码
for (var key in stocks) {
var stock = stocks[key];
stores[stock.store.id] = stock.store;
var store = stores[stock.store.id];
if (!store.sizes || !store.sizes.length) {
store.sizes = [stock.size];
}
}
但它会一直覆盖商店的第一个尺寸值。
提前致谢。
答案 0 :(得分:1)
这是解决问题的一种方法
var stocks = [
{"size": 2, "count": 3, "store": {"id": 3, "name": "Canberra"}},
{"size": 3, "count": 3, "store": {"id": 4, "name": "Belconnen"}},
{"size": 4, "count": 3, "store": {"id": 5, "name": "Bankstown"}},
{"size": 5, "count": 3, "store": {"id": 4, "name": "Belconnen"}}];
var obj = {};
stocks.forEach(function(item){
// initialize if object key not present
if(!obj[item.store.id]){
obj[item.store.id] = {"sizes": {}};
}
obj[item.store.id]["sizes"][item.size] = item.count;
});
console.log(obj);
这是工作小提琴https://jsfiddle.net/flyinggambit/nc3uny53/
检查控制台窗口是否有小提琴输出