Ember 不支持深度Copy

var dpItemDataCopy = Ember.makeArray(dpItemData);console.log(dpItemData[0].links);console.log(dpItemDataCopy[0].links);delete dpItemDataCopy[0].links;console.log(dpItemData[0].links);console.log(dpItemDataCopy[0].links);

console的结果简略给出

Object
Object
undefined
undefined

我只删除Copy后数组第一个Object的links,但原始数组的第一个Object的links也被删除掉;

var dpItemDataCopy = Ember.makeArray(dpItemData);console.log(dpItemData[0].links);console.log(dpItemDataCopy[0].links);delete dpItemDataCopy[0].links;console.log(dpItemData[0].links);console.log(dpItemDataCopy[0].links);

既然copy不管用,换makeArray试试,但是结果还是一样的;
网上讲这是Ember的一个bug

最后解决办法

var dpItemDataCopy = dpItemData.map(function(item) {return Ember.copy(item, true)});console.log(dpItemData[0].links);console.log(dpItemDataCopy[0].links);delete dpItemDataCopy[0].links;console.log(dpItemData[0].links);console.log(dpItemDataCopy[0].links);

console结果

    ObjectObjectObjectundefined

结论

  • Ember copy和makeArray不支持deep复制数组
  • 若想要真正copy一个数组,可以采用上面的方式,Ember后续应该会给出新的api

参考

http://stackoverflow.com/questions/9693154/native-array-in-emberjs-does-not-support-deep-copy

Ember copy array相关推荐

  1. php copy array,ES6中Array.copyWithin()函数用法的详解

    ES6为Array增加了copyWithin函数,用于操作当前数组自身,用来把某些个位置的元素复制并覆盖到其他位置上去.下面重点给大家介绍ES6中Array.copyWithin()函数的用法,需要的 ...

  2. C#把某个数组的一部分复制到另一个数组中的两种方法:Buffer.BlockCopy和Array.Copy...

    static void Main(string[] args){int[] src = new[] { 1, 2, 3, 4, 5, 6 };const int destLen = 4;//目标数组大 ...

  3. C++ 复制vector值到array,复制 array 到jintArray

    // [feature 1 ] copy vector value to array vector<int> vec ; for (int i = 0 ;i<10;++i) {   ...

  4. stl中copy()函数_std :: rotate_copy()函数以及C ++ STL中的示例

    stl中copy()函数 C ++ STL std :: rotate_copy()函数 (C++ STL std::rotate_copy() function) rotate_copy() fun ...

  5. C#中Array类精讲

    文章目录 一.Array类概念 二.Array类属性 三.Array类方法 一.Array类概念 Array 类是 C# 中所有数组的基类,它是在 System 命名空间中定义.Array 类提供了各 ...

  6. Unity中Array数组知识点总结

    C# Array 类 Array 类是 C# 中所有数组的基类,它是在 System 命名空间中定义.Array 类提供了各种用于数组的属性和方法. Array 类的属性 下表列出了 Array 类中 ...

  7. 图形化编程 html,用GoJS实现图形化交互编程界面示例

    JavaScript 语言: JaveScriptBabelCoffeeScript 确定 function init() { var $ = go.GraphObject.make; //for c ...

  8. C_Imap 邮件的imap

    <?php class C_Imap{public $Fosck = null;public $Server = '';public $Port = 143;public $Errno = nu ...

  9. JS判断元素是否在数组内

    一.JQuery 如果是用JQuery的话,可以用inArray()函数: jquery inarray()函数详解 jquery.inarray(value,array) 确定第一个参数在数组中的位 ...

  10. 【Python】Numpy扩充数组函数之repeat和tile用法

    2019独角兽企业重金招聘Python工程师标准>>> [Python]Numpy扩充数组函数之repeat和tile用法,有需要的朋友可以参考下. 用repeat和tile扩充数组 ...

最新文章

  1. 如何优雅的转换 Bean 对象!
  2. epoll_data_t里面的void *ptr; int fd; u32; u64 分析
  3. 专访黄勇:Java在未来的很长一段时间仍是主流
  4. DL之AlexNet:AlexNet算法的架构详解、损失函数、网络训练和学习之详细攻略
  5. 大学慕课数据结构单元测试——华中科技大学
  6. 牛客网【每日一题】7月21日题目精讲—区间权值
  7. 【nyoj 270】数的分解(统计因子模板)
  8. cf修复服务器,CF:“卡顿”问题终于得到重视!新版本宣布修复,玩家这下开心了...
  9. 【VB】StrConv函数.
  10. linux系统清理内存,如何清除linux的内存缓存,缓冲和交换空间
  11. 数量场的等值面与矢量场的矢量线的一些基本的东西(写得不好)
  12. JS 测试 Prototype
  13. CF1083(Round #526 Div. 1) 简要题解
  14. Mybatis3.5.4官网下载
  15. Infopath入门到精通系列-3 Infopath manifest.xsf文件 解析
  16. GTK使用cairo绘图教程
  17. 17.3.13 多任务学习 Multi-task learning
  18. python培训总结报告
  19. Win系统下将CER文件转成BKS文件
  20. 10. 哈夫曼树、Trie、补充

热门文章

  1. 交流电机Clark变换中的功率不变约束与幅值不变约束
  2. 河南增值税开票系统原服务器地址,河南省增值税发票综合服务平台登录入口:https://fpdk.henan.chinatax.gov.cn...
  3. julia安装源_[julia]本地离线安装package
  4. gift to me by myself on 2012's new year
  5. 【华谋咨询】企业5s管理做大做强的四大措施
  6. ocx注册以及检测(转)
  7. 零基础新手如何自学PS
  8. C语言 斐波那契数列
  9. JS生成uuid的四种方法
  10. 47001 data format error hint -- 解析 JSON/XML 内容错误