我有一个容器(ul)中的HTML元素列表(li),在用户从完整列表中选择一个项目后添加。有不同的类别,每个类别都有相应的"项目"。 例如:
<!--Clicking on an item adds it to the user_selection_list below-->
<ul class="full_list">
<li data-category="A" data-item="1">test1</li>
<li data-category="A" data-item="2">test2</li>
<li data-category="A" data-item="3">test3</li>
<li data-category="A" data-item="4">test4</li>
<li data-category="B" data-item="1">test1</li>
<li data-category="B" data-item="2">test2</li>
<li data-category="C" data-item="1">test1</li>
<li data-category="C" data-item="2">test2</li>
<li data-category="C" data-item="3">test3</li>
<li data-category="C" data-item="4">test4</li>
</ul>
<!--Items that were selected-->
<ul class="user_selection_list">
<li data-category="A" data-item="1">test1</li>
<li data-category="A" data-item="2">test2</li>
<li data-category="A" data-item="4">test4</li>
<li data-category="B" data-item="1">test1</li>
<li data-category="B" data-item="2">test2</li>
<li data-category="C" data-item="3">test3</li>
</ul>
<button type="button" onclick="execute()">exec</button>
最终我想要的是通过Javascript(或jquery)创建一个json对象数组:
let data_json = [
{"category" : A, "items": [1,2,4]},
{"category" : B, "items": [1,2]},
{"category" : C, "items": [3]}
]
假设在&#34; user_selection_list&#34;中可以有大约1-100个选项,以下哪种方法可能是最有效的。列表:
循环播放&#34; user_selection_list&#34;并将每个项目添加到临时JSON结构中:
让temp_data_json = [ {&#34;类别&#34;:&#34; A&#34;,&#34;项目&#34;:&#34; 1&#34;}, {&#34;类别&#34;:&#34; A&#34;,&#34;项目&#34;:&#34; 2&#34;}, {&#34;类别&#34;:&#34; A&#34;,&#34;项目&#34;:&#34; 4&#34;}, {&#34;类别&#34;:&#34; B&#34;,&#34;项目&#34;:&#34; 1&#34;}, {&#34;类别&#34;:&#34; B&#34;,&#34;项目&#34;:&#34; 2&#34;}, {&#34;类别&#34;:&#34; C&#34;,&#34;项目&#34;:&#34; 3&#34;}]
当用户按下EXEC按钮时,我循环遍历临时结构中的每个项目,并按类别组织以实现data_json。
我觉得通过添加每个项目而不首先将它们分类到temp_data_json中,添加它们会更快,然后我们可以在按下按钮后对它们进行分类。
通过清除JSON数据然后重新添加,我们确保在&#34; user_selection_list&#34;中有一个完美同步的列表。和data_json
通过清除JSON数据然后重新添加,我们确保在&#34; user_selection_list&#34;中有一个完全同步的列表。和data_json
通过这种方式,我觉得我们并没有&#34;同步&#34;但保留两个列表(&#34; user_selection_list&#34;和data_json),但我不知道只是清除data_json列表并重新添加所有项目或搜索data_json并在必要时添加/删除。