移调json对象数组
我必须迭代“price_detail”json数组对象。请教我如何重新研究这种类型的对象。我已经穿过很多结构,但不是这种类型。我无法找到这种类型的数据结构的搜索移调json对象数组
码I使用“嵌套通过JSON对象阵列迭代”的一个例子:
$.each(json.data['price_detail'], function (i, item) {
console.log('name='+ i + ' value=' +item);
}
output:
name=price value=14.7,14.7,14.7
name=type value=coupon,coupon,coupon
name=savings value=,75%,35%
name=pharmacy value=Walmart,Kmart,Costco
数据具有如下的结构。
{"errors": [],
"data": {"form": "tablet",
"price_detail":
{"price": [14.7, 14.7, 14.7],
"type": ["coupon", "coupon", "coupon"],
"savings": [null, "75%", "35%"],
"pharmacy": ["Walmart", "Kmart", "Costco"]},
"brand": ["lortab", "maxidone", "vicodin", "norco", "xodol", "hycet"],
"dosage": "5mg/325mg", "generic": ["hydrocodone/acetaminophen", "lorcet", "zolvit"],
"prices": [14.7, 14.7, 14.7],
"quantity": 60,
"display": "Lortab, Maxidone, Vicodin, Norco, Xodol, Hycet (hydrocodone/acetaminophen, lorcet, zolvit)",
"manufacturer": "generic"},
"success": true}
我想要一个使用制药,类型,节省和价格的对象;如:
{
["Walmart", "coupon", NULL, 14.7],
["Kmart", "coupon", "75%", 14.7],
["Costco","coupon", "35%", 14.7]
}
谢谢。
编辑:我改变了标题。淘宝网后,我发现我需要调换json结果。请原谅我缺乏术语。
我试图使用此功能,我发现转置的阵列
function transpose(a) {
return Object.keys(a[0]).map(function (c) {
return a.map(function (r) {
return r[c];
});
});
}
创建的测试数据,通过功能
var testData = [ [14.7, 14.7, 14.7],
["coupon", "coupon", "coupon"],
[null, "75%", "35%"],
["Walmart", "Kmart", "Costco"]
]
var result = transpose(testData);
运行它这使我所期望的结果。
[14.7, "coupon", null, "Walmart"],
[14.7, "coupon", "75%", "Kmart"],
[14.7, "coupon", "35%", "Costco"]
现在,当我跑我的“price_detail”对象通过它
transpose(json.data['price_detail']);
我陷在这样的错误:遗漏的类型错误:无法转换未定义或为空反对
你规定所需的输出不是有效的JSON,但是这里有一个例子可以产生我认为对你有用的格式。如果它不是你想要的,你现在可以看到如何修改它以适应你。
var json = {
"errors": [],
"data": {
"form": "tablet",
"price_detail": {
"price": [14.7, 14.7, 14.7],
"type": ["coupon", "coupon", "coupon"],
"savings": [null, "75%", "35%"],
"pharmacy": ["Walmart", "Kmart", "Costco"]
},
"brand": ["lortab", "maxidone", "vicodin", "norco", "xodol", "hycet"],
"dosage": "5mg/325mg",
"generic": ["hydrocodone/acetaminophen", "lorcet", "zolvit"],
"prices": [14.7, 14.7, 14.7],
"quantity": 60,
"display": "Lortab, Maxidone, Vicodin, Norco, Xodol, Hycet (hydrocodone/acetaminophen, lorcet, zolvit)",
"manufacturer": "generic"
},
"success": true
};
var result = [];
for (var i = 0; i < json.data.price_detail.pharmacy.length; i++) {
result.push({
"pharmacy": json.data.price_detail.pharmacy[i],
"type": json.data.price_detail.type[i],
"savings": json.data.price_detail.savings[i],
"price": json.data.price_detail.price[i]
});
}
console.log(JSON.stringify(result));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
下的编辑按钮你的解决方案比我能想到的更清晰。在回答答案之前,我可能编辑了我的文章。我有点想到.push方法在这里很有用,但我真的不知道如何转置。 – user2751629
没问题。是的,它看起来像你在此期间编辑你的问题。你还有问题吗?你需要一些帮助吗,还是你修复它?如果你愿意的话,我可以修改答案来达到你想要的输出格式。为什么downvote,或者那不是你? – ADyson
https://*.com/questions/19323699/iterating-through-json-object-javascript做发布前一些研究,然后写一些代码,试图解决自己的问题。如果您无法使其工作,请在此处发布您的代码。这不是免费的编码服务,当然也不是免费的研究服务。你认为之前没有人尝试循环过一个对象,或者从结果中创建一个新对象?如果可以看到您先做出了自己的努力,人们会很乐意花时间和精力来帮助您修复代码。 – ADyson
[迭代通过json对象javascript]可能的副本(https://*.com/questions/19323699/iterating-through-json-object-javascript)我假设你想用javascript来做到这一点,尽管你甚至没有在问题中标记过某种语言。 – ADyson
我确实做了一些研究,不再假设。我写了代码,谢谢你的提问。我不明白如何排列数据与列,我相信我需要通过列循环 – user2751629