当前位置: 首页 > 面试题库 >

jQuery对象上的递归迭代

龚昊然
2023-03-14
问题内容

前几天,我以为我在jQuery中看到了一个对象迭代器,该对象迭代器具有可以设置为对子对象进行递归迭代的标志。我以为它是jQuery.each()的一部分,但是现在我在文档中看不到该功能。

jQuery中是否有任何此类迭代器可以自动递归?

(我知道如何用JavaScript进行操作。只是想知道我是否确实看到了我以为看到的东西。)

非常感谢!

编辑: 要清楚,我在想像jQuery.each()这样的实用程序方法,它将对javascript对象及其嵌套对象进行递归迭代。

在下面的示例中,each()方法将遍历所有对象,包括myobj.obj2.key2中的嵌套对象。

我可能发誓我在jQuery文档中看到了一些有关此的内容,但现在找不到了。

谢谢。

var myobj = {
    obj1: {key1:'val1', key2:'val2'},
    obj2: {key1:'val1', key2: {nest1:'val1', nest2:'val2', nest3:'val3'}},
    obj3: {key1:'val1', key2:'val2'}
}

$jQuery.each(myobj, function(key,val) {
    // Code to run over each key/val pair
    // Does so recursively to include all nested objects
})

问题答案:

.find(’selector’)方法基本上是.children()的可追溯版本,它将找到与选择器匹配的任何后代对象,而.children()则仅在第一级后代中找到对象。

第2次编辑(我第一次措辞不好,并弄乱了代码!):

好的,我认为此功能作为标志是没有意义的:您可以永远快乐地通过该对象进行递归(相信我,我打破了firefox的做法),因此您需要进行某种交互以确保仅在以下情况时递归子对象是有效的递归候选对象。

您需要做的就是简单地拆分函数,如下所示:

var myobj = {
  obj1: {
    key1: 'val1',
    key2: 'val2'
  },
  obj2: {
    key1: 'val1',
    key2: {
      nest1: 'val1',
      nest2: 'val2',
      nest3: 'val3'
    }
  },
  obj3: {
    key1: 'val1',
    key2: 'val2'
  }
}

$jQuery.each(myobj, function(key, val) {
  recursiveFunction(key, val)
});

function recursiveFunction(key, val) {
  actualFunction(key, val);
  var value = val['key2'];
  if (value instanceof Object) {
    $.each(value, function(key, val) {
      recursiveFunction(key, val)
    });
  }

}

function actualFunction(key, val) {
  /// do stuff
}


 类似资料:
  • 问题内容: 我正在使用有角JS及其示例之一:http : //jsfiddle.net/furf/EJGHX/ 在发送更新功能之前,我需要获取数据并向其中添加一些值。(如果用angular而不是js更好,请告诉我) 我正在尝试获取“父代”和“索引”并更新子代。 这是我正在遍历的数据 这就是我目前正在遍历的方式,但是它只能得到第一个维度 我在另一个小提琴上找到了这个,但我不知道该如何抓取父对象或索引

  • 如果说在任何地方都使用递归,那么可以使用for循环,对吗?如果递归通常比较慢,那么将其用于循环迭代的技术原因是什么? 如果总是可以将递归转换为for循环,那么有经验法则吗?

  • 问题内容: 我正在编写一个递归函数,其目的是迭代pList文件。我的代码是 但是当我调用函数“ HashMapper((Map)((Map)entry).keySet());”时。我有一个例外 java.util.HashMap $ HashMap条目不能转换为java.util.Map 我不知道如何调用函数以及如何将Hashmap条目转换为Map 问题答案: 入境确实不是。它是,因此您可以根据需

  • 前面几节介绍了两个可以方便地用递归与迭代实现的函数。本节要比较递归与迭代方法,介绍为什么程序员在不同情况下选择不同方法。 递归与迭代都是基于控制结构:迭代用重复结构,而递归用选择结构。递归与迭代都涉及重复:迭代显式使用重复结构,而递归通过重复函数调用实现重复。递归与迭代都涉及终止测试:迭代在循环条件失败时终止,递归在遇到基本情况时终止。使用计数器控制重复的迭代和递归都逐渐到达终止点:迭代一直修改计

  • 问题内容: 有没有一种方法(在jQuery或JavaScript中)循环遍历每个对象以及子对象和孙子对象等等? 如果是的话…我还能读他们的名字吗? 例: 所以循环应该做这样的事情… 问题答案: 您正在寻找循环: 请注意,循环将遍历任何可枚举的属性,包括那些添加到对象原型的属性。为了避免作用于这些属性,可以使用方法检查该属性是否仅属于该对象: 递归执行循环就像编写递归函数一样简单:

  • 我在scheme中构建了一个递归函数,它将在一些输入上重复给定的函数f,n次。 我需要用尾递归构建这个函数的迭代版本,如果我正确理解尾递归,我认为我做得对。 我的问题是,这真的是迭代的吗?我相信我已经使用尾部递归正确地构建了它,但从技术上讲,它仍然将一系列操作推迟到count=0,在这里,它执行叠加的任意多个组合。