Javascript 避免迭代外部循环

Javascript 避免迭代外部循环,javascript,jquery,Javascript,Jquery,我有一个场景,需要迭代两个列表或数组以获得所需的值。所以我在做这样的事情: var html = ""; $.each(list, function (i, set1) { //set1 is a list or array $.each(set1.Tabs, function (i, set2) { //set1.Tabs is another one html += "<li><a href='#" + set

我有一个场景,需要迭代两个列表或数组以获得所需的值。所以我在做这样的事情:

var html = "";
$.each(list, function (i, set1) { //set1 is a list or array
     $.each(set1.Tabs, function (i, set2) { //set1.Tabs is another one
       html += "<li><a href='#" + set2.TabName + "'>" + set2.Details + "</a> <span class='ui-icon ui-icon-close' role='presentation'>Remove Tab</span></li>";                                   
    })
})
尽管上述方法可行,但我的预期结果如下:

输入:[1,2,3,3,4,5,6,6]
输出:[1,2,3,4,5,6]

N.B:我关心的是内部循环,而不是外部循环。但是为了迭代内部循环,我必须遍历外部循环。有什么方法可以让内环直接工作吗

更新1:示例代码

$(文档).ready(函数(){
var html=“”;
风险值数据=[{
“id”:“0001”,
“类型”:“甜甜圈”,
“名字”:“蛋糕”,
“ppu”:0.55,
“浇头”:
[
{“id”:“5001”,“type”:“None”},
{“id”:“5002”,“type”:“glassed”},
{“id”:“5005”,“type”:“Sugar”},
{“id”:“5007”,“类型”:“糖粉”}
]
},
{
“id”:“0002”,
“类型”:“甜甜圈”,
“名字”:“蛋糕”,
“ppu”:0.55,
“浇头”:
[
{“id”:“5001”,“type”:“None”},
{“id”:“5002”,“type”:“glassed”},
{“id”:“5005”,“type”:“Sugar”},
{“id”:“5007”,“类型”:“糖粉”}
]
}
]
$。每个(数据,函数(i,set1){//set1是一个列表或数组
$.each(set1.topping,function(i,set2){//set1.Tabs是另一个
html+=“
  • 删除选项卡”
  • ”; }) }) $('#add').append(html); });
    您可以基于
    id
    创建唯一的浇头,然后使用唯一浇头呈现列表。要创建独特的浇头,可以使用
    flatMap()
    Object.values()
    array\reduce

    $(文档).ready(函数(){
    var html=“”;
    风险值数据=[{
    “id”:“0001”,
    “类型”:“甜甜圈”,
    “名字”:“蛋糕”,
    “ppu”:0.55,
    “浇头”:[{
    “id”:“5001”,
    “类型”:“无”
    },
    {
    “id”:“5002”,
    “类型”:“釉面”
    },
    {
    “id”:“5005”,
    “类型”:“糖”
    },
    {
    “id”:“5007”,
    “类型”:“糖粉”
    }
    ]
    },
    {
    “id”:“0002”,
    “类型”:“甜甜圈”,
    “名字”:“蛋糕”,
    “ppu”:0.55,
    “浇头”:[{
    “id”:“5001”,
    “类型”:“无”
    },
    {
    “id”:“5002”,
    “类型”:“釉面”
    },
    {
    “id”:“5005”,
    “类型”:“糖”
    },
    {
    “id”:“5007”,
    “类型”:“糖粉”
    }
    ]
    }
    ]
    const uniqueToppings=对象值(数据
    .flatMap(o=>o.topping)
    .reduce((r,{id,type})=>{
    r[id]=r[id]|{id,type};
    返回r;
    },{}));;
    $。每个(唯一浇头,功能(i,套){
    html+=“
  • 删除选项卡”
  • ”; }); $('#add').append(html); });
    
    
    您有什么问题?请注意,如果您可以在问题中添加一个
    list
    示例,这样我们就可以重新创建您的环境,关于内部循环,使用另一个变量作为索引,这可能会更加有益<代码>i
    用于外部循环。。。因此,使用
    j
    作为内部代码除此之外,您没有发布足够的代码来解决您的问题。
    list
    是一个二维数组。您是要过滤掉重复的行,还是只是重复的单元格?如果是单个单元格,则
    set2
    对象中是否有唯一的ID属性?过滤掉重复的行@Barmar。内部循环按预期工作,但外部循环获得意外的重复结果集。
    list = list.filter((x, i, a) => a.indexOf(x) === i);