Jquery 对项目进行分组并重新生成列表

Jquery 对项目进行分组并重新生成列表,jquery,html,Jquery,Html,我有一个嵌套列表,其中包含一些字符串数据。我想要的是遍历第一个列表,检查每个一级项目,并将相同的项目分组。然后我想用逗号将字符串拆分,这样我就可以创建separate项,将列表1中的所有项都嵌套到相同的字符串值中。我想尝试通过rach一级的迭代,将每一个唯一的添加到一个数组中,然后以某种方式将二级的那个配对 起始列表: <ul> <li class="level-one"> flowers,trees <ul>

我有一个嵌套列表,其中包含一些字符串数据。我想要的是遍历第一个列表,检查每个一级项目,并将相同的项目分组。然后我想用逗号将字符串拆分,这样我就可以创建separate项,将列表1中的所有项都嵌套到相同的字符串值中。我想尝试通过rach一级的迭代,将每一个唯一的添加到一个数组中,然后以某种方式将二级的那个配对

起始列表:

<ul>
    <li class="level-one">
        flowers,trees
        <ul>
            <li class="level-two">
                gardening
            </li>
        </ul>
    </li>
    <li class="level-one">
        flowers,trees
        <ul>
            <li class="level-two">
                planting
            </li>
        </ul>
    </li>
    <li class="level-one">
        orange,lemon
        <ul>
            <li class="level-two">
                fruit
            </li>
        </ul>
    </li>
    <li class="level-one">
        orange,lemon
        <ul>
            <li class="level-two">
                citrus
            </li>
        </ul>
    </li>
</ul>
预期结果:

 <ul>
        <li class="level-one">
            flowers
            <ul>
                <li class="level-two">
                    gardening
                </li>
                <li class="level-two">
                    planting
                </li>
            </ul>
        </li>
        <li class="level-one">
            trees
            <ul>
                <li class="level-two">
                    gardening
                </li>
                <li class="level-two">
                    planting
                </li>
            </ul>
        </li>
        <li class="level-one">
            orange
            <ul>
                <li class="level-two">
                    fruit
                </li>
                <li class="level-two">
                    citrus
                </li>
            </ul>
        </li>
        <li class="level-one">
            lemon
            <ul>
                <li class="level-two">
                    fruit
                </li>
                <li class="level-two">
                    citrus
                </li>
            </ul>
        </li>
    </ul>

如果你一步一步地把它分解,这是最容易的

获取所有一级文本并在逗号处拆分它们 确保我们得到的列表没有重复项 查找每个类别的第二级列表项 复制它们以便以后插入,否则我们只会移动第二级项目,不清楚您是否想要这样做 插入所有内容 注意:我创建了一个数组objs,它将包含最后插入DOM所需的结构

$function{ $buttontest.clickfunction{ 设l1=$li.level-one; //获取我的第一级列表/ 设l1txt=$.mapl1,functionelem{ 返回$.trim$elem.contents.first.text.split,; }; //使列表独一无二 l1txt=l1txt.filterfunctionitem,pos,self{ 返回self.indexOfitem==pos; }; //获取匹配的列表项 让objs=$.mapl1txt,function{ 返回{ 级别1:t, 级别2:findMatchest }; }; //console.logl1txt; //console.logobjs; //芬达奇花; 让$ul=$;//创建新的ul以将它们转储到 $ul.append$.mapobjs,functionelem{ 让$sub=$.appendelem.level2;//这些是匹配的li return$//我的第一个新项目 .appendelem.level1//追加文本“category” .append$sub;//追加我刚刚创建的子列表 }.insertBefore$this;//将其放在我单击的按钮之前。 }; }; //查找类别的匹配列表项 函数findMatcheslevel1{ //请确保我们克隆了列表项,以便旧列表可以保持不变。 返回$`li.level 1:包含${level1}li.level 2`.clone.toArray; } 去 花、树 园艺 花、树 种植 橙子,柠檬 水果 橙子,柠檬 柑橘
更正,即使我认为结果应该是什么仍然足够清楚。听起来你有一个计划。那么,你尝试了什么,你在哪里被卡住了?我很早就被卡住了,我不确定我是否应该先向数组中添加完整的字符串,然后用逗号对它们进行排序。。。我有点困在那里了,已经准备好了,把它标记为解决方案。我想一件一件地解决这个问题,但我哽咽了,把它们拼接起来,然后把它们组合在一起。