gpt4 book ai didi

angularjs - 扩展递归

转载 作者:行者123 更新时间:2023-12-02 19:09:11 24 4
gpt4 key购买 nike

我想扩展一些递归属性(又名深度复制)。很像 jQuery 所做的。我不包括 jquery 只是一件事的 b/c。

jQuery.extend( true, target, object1 )

你知道有什么优雅的方法可以用简单的 javascript 或 angularjs 来实现吗?

更新请看一下并尝试达到相同的结果 http://plnkr.co/edit/GHabYbyhsqtfBPtplksO?p=preview

我确实研究了 .copy() 但“属性(对象)被删除”

最佳答案

这是一个基于 angular.extend 函数的 extendsDeep 函数。如果你将其添加到你的 $scope 中,你就可以调用

$scope.meta = $scope.extendDeep(ajaxResponse1.myMeta, ajaxResponse2.defaultMeta);

并获得您正在寻找的答案。

$scope.extendDeep = function extendDeep(dst) {
angular.forEach(arguments, function(obj) {
if (obj !== dst) {
angular.forEach(obj, function(value, key) {
if (dst[key] && dst[key].constructor && dst[key].constructor === Object) {
extendDeep(dst[key], value);
} else {
dst[key] = value;
}
});
}
});
return dst;
};

注意:此函数具有将值从后面的参数复制到前面的参数的副作用。要简单修复此副作用,您可以将 dst[key] = value 更改为 dst[key] = angular.copy(value)

关于angularjs - 扩展递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15310935/

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