我有一个具有以下结构的对象。
var obj = {
"a":{"content": [/*elements*/]},
"b":{
"d":{
"g":{"content":[/*elements*/]},
"h":{
"j":{"content":[/*elements*/]},
"k":{"content":[/*elements*/]}
},
"i":{
"l":{"content":[/*elements*/]}
}
},
"e":{"content":[/*elements*/]},
"f":{"content":[/*elements*/]}
},
"c":{"content":[/*elements*/]},
/* Object goes on with different levels of nesting*/
};
嵌套对象的格式表现出独特的行为 -
每个嵌套对象都有 1. 一个名为 "content"
的属性。谁的
value 是一个一维元素数组,或者2。不同级别的嵌套对象
其属性最终缩小到上面的(1)。
我有一个递归函数来搜索 content
整个obj的数组如下:
function search(index) {
for(var key in index) {
var current = index[key];
var cLength = Object.keys(current).length;
if(cLength > 1 ) {
search(current);
} else {
if (index[key]["content"] == undefined) {
search(current);
} else {
contentsArray = index[key]["content"];
// Search Contents Array
}
}
}
}
search(obj);
实际的 obj 是一个深度嵌套的对象,具有相当多的数据条目。
我想运行基准测试以获得平均时间
采取在 "contents"
中搜索元素数组任何嵌套对象。我的问题是 - 我如何识别
最后for...in
父对象的循环obj
同时递归循环它? (记录完成时间)有没有更好的计时方法
执行这样的函数?
我尝试过推迟 for loop
的时间完成 "contents"
的循环数组(对于每个嵌套对象)到全局 execTime
数组,然后使用 setTimeout
搜索函数之外的函数来获取 max
之间的差异和min
execTime
中的值因为我不确定递归搜索函数何时停止执行。
最佳答案
@VLAZ 的评论被证明非常有用:我已经决定使用以下内容来运行基准测试(仍然没有弄清楚 一个*代码内解决方案,但这可以完成工作)
console.time("recursion");
search(obj);
console.timeEnd("recursion");
这是一个工作demo
关于javascript - 通过嵌套对象 JavaScript 计时递归迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59619378/