加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 扩展递归

发布时间:2020-12-17 08:25:21 所属栏目:安全 来源:网络整理
导读:我想扩展一些属性递归(aka。deep copy)。 很像jQuery。我不包括jquery只有b / c的一件事。 jQuery.extend( true,target,object1 ) 有没有什么优雅的方式,你知道这是用简单的javascript或angularjs? 更新 请看看,尝试完成相同的结果 http://plnkr.co/edit/
我想扩展一些属性递归(aka。deep copy)。
很像jQuery。我不包括jquery只有b / c的一件事。
jQuery.extend( true,target,object1 )

有没有什么优雅的方式,你知道这是用简单的javascript或angularjs?

更新
请看看,尝试完成相同的结果
http://plnkr.co/edit/GHabYbyhsqtfBPtplksO?p=preview

我没有看到.copy(),但“属性(对象)被删除”

这是一个基于angular.extend函数的extendDeep函数。如果您将其添加到您的$范围内,则可以调用
$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)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读