【发布时间】:2013-03-19 10:39:13
【问题描述】:
问题概述
假设我有一批糖果。货物有多个盒子,每个盒子都有许多独特的糖果类型。每个盒子都有一个唯一的 id,与其他盒子不同;糖果类型也是如此。此外,糖果还具有其他特征,例如颜色、风味和数量。
示例代码
以下面的 HTML 示例为例:
<div class="shipment">
<div class="box" data-boxid="a">
<div class="candy" data-candyid="1" data-color="orange" data-flavor="orange" data-qty="7">
<!-- unimportant content -->
</div>
<div class="candy" data-candyid="2" data-color="red" data-flavor="strawberry" data-qty="4">
<!-- unimportant content -->
</div>
</div>
<div class="box" data-boxid="b">
<div class="candy" data-candyid="3" data-color="green" data-flavor="lime">
<!-- unimportant content -->
</div>
</div>
</div>
以前的尝试
我看到过使用 jQuery 的 .map() 函数解析表的类似示例,也看到过提到 .each(),但我无法生成任何工作代码。
期望的输出
我想(使用 jQuery)生成一个 JSON 对象类似于,如下所示:
{
"shipment": {
"a": {
"1": {
"color": "orange",
"flavor": "orange",
"qty": "7"
},
"2": {
"color": "red",
"flavor": "strawberry",
"qty": "4"
}
},
"b": {
"3": {
"color": "green",
"flavor": "lime"
}
}
}
}
附加说明
我的应用程序已经广泛使用 jQuery,因此它似乎是适合这项工作的合乎逻辑的工具。但是,如果纯 'ol JavaScript 是更合适的选择,请随意说。
HTML 总是格式正确的,并且总是遵循指定的格式。但是,在某些情况下,信息可能不完整。 请注意,第三个糖果没有指定数量,因此在构建对象时会简单地忽略数量。
【问题讨论】:
-
.each()和.find()的组合应该可以解决问题。从顶部开始,逐步进入内部属性。 -
我尝试过类似的方法,但我相信我遇到过与孩子的孩子一起工作(例如,嵌套的
.each()函数)。你能举个例子吗?我不一定要求一个完整的解决方案(毕竟,这是一个虚构的例子)。只是朝着正确的方向迈出一步。
标签: javascript jquery json html-parsing scrape