gpt4 book ai didi

javascript - 使用迭代样式在 JavaScript 中克隆对象

转载 作者:可可西里 更新时间:2023-11-01 01:50:54 25 4
gpt4 key购买 nike

是否可以重写以下 JavaScript 递归函数以使其更快?

function clone_recursive(object) {
var result = {};
for (var key in object) {
var value = object[key];
if (typeof value === 'object') {
result[key] = clone_recursive(value);
} else {
result[key] = value;
}
}
return result;
}

我以迭代的方式重写了它,但它没有获得任何性能,事实上速度下降了 ≈20%。

function clone_iterative(object) {
var result = {};
var queue = [{base: result, value: object}];
var item;
while (item = queue.shift()) {
var current = item.value;
var base = item.base;
for (var key in current) {
var value = current[key];
if (typeof value === 'object') {
var resultValue = base[key] = {};
queue.push({base: resultValue, value: value});
} else {
base[key] = value;
}
}
}
return result;
}

http://jsperf.com/clone-an-object/13

最佳答案

迭代版本是否真的更快是值得怀疑的,因为您正在用对队列函数的多次调用替换递归调用。向迭代的转换有助于防止堆栈溢出(因为在解释语言中调用堆栈往往小于堆),并且在没有尾调用优化的语言中使用尾递归。

关于javascript - 使用迭代样式在 JavaScript 中克隆对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8263991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com