Javascript 嵌套的double each()和$(this)

Javascript 嵌套的double each()和$(this),javascript,jquery,html,loops,Javascript,Jquery,Html,Loops,我有两个数组:菜单项和克隆,我有两个嵌套的each()函数 $(menu_items).each(function() { $(clones).each(function() { if ($(this).attr("href") == ...) { <do sth> } }); }); $(菜单项)。每个(函数(){ $(克隆)。每个(函数(){ 如果($(this.attr(“href”)===…){ } }); }); 我想检查第二个循

我有两个数组:
菜单项
克隆
,我有两个嵌套的each()函数

$(menu_items).each(function() {
  $(clones).each(function() {
    if ($(this).attr("href") == ...) {
        <do sth>
    }
  });
});
$(菜单项)。每个(函数(){
$(克隆)。每个(函数(){
如果($(this.attr(“href”)===…){
}
});
});
我想检查第二个循环中的项目(克隆)的
href
是否等于第一个循环中的项目(菜单项)。
检查
克隆中的项目很容易:
$(this.attr(“href”)
。但是第一个循环
菜单项怎么办<代码>$(此)。$(此).attr(“href”)
?我想不是:(请帮助。

您可以将
引用保存在外部循环中,以便在内部循环中使用它:

$(menu_items).each(function() {
  const outerThis = $(this);

  $(clones).each(function() {
    if ($(this).attr("href") == outerThis.attr('href')) {
        <do sth>
    }
  });
});

我希望避免
这个
问题,而是使用第二个
每个
参数,这将使代码更具可读性too@CertainPerformance为了避免混淆:您正在谈论js
。forEach
有一个作用域/此参数,OP使用jquery
。每个
都没有这个作用域。@Xatenev当然有,他只是t需要将变量定义为第二个参数。请参阅@CertainPerformance我不知道你的意思。@Xatenev
$(克隆)。每个(函数(u,克隆){
都会导致
克隆
成为
克隆
中的一个,根本不需要
这个
,外部循环也一样谢谢,这就是我需要的:)@水手月亮看到更新,使用任何你喜欢的。这也是很棒的解决方案,谢谢!
 $(menu_items).each(function(_, menuItem) {

      $(clones).each(function(_, clone) {
        if (clone.attr("href") == menuItem.attr('href')) {
            <do sth>
        }
      });
    });