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. python游戏脚本实例-Python使用pygame模块编写俄罗斯方块游戏的代码实例
  2. Android开发总结
  3. HP大中华区总裁孙振耀谈工作、职业与人生规划
  4. NET流行高性能JSON框架-Json.NET
  5. ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
  6. IDE 插件新版本发布,总有一个功能帮到你——开发部署提速 8 倍
  7. PE教程6: Import Table(引入表)(看雪)
  8. 重庆航天职业技术学院计算机系在哪个校区,2020年重庆航天职业技术学院地址在哪里...
  9. Mysql深入浅出学习
  10. 2020.9.28 爱客影视3.6.5-pro完整版搭建完毕带解析接口无广告
  11. masm32 汇编hello world程序
  12. captura 录制出来的是黑屏_黑屏:我录制的视频播放时画面是黑的解决方案 - Bandicam(班迪录屏)...
  13. 美团|商家数据指标体系搭建实例 。
  14. php文字转语音amr,Android插件,TTS语音合成(文字转化语音)。
  15. 各种笔记本进入BIOS的快捷键
  16. 用c语言找出图片中黄颜色部分,测试:6种玫瑰颜色找出你的恋爱基因,神准!...
  17. Snapde电子表格支持的文件格式
  18. 本地文件压缩上传linux系统,使用压缩的方式将Windows下的zip压缩包上传到Linux系统的方法解析...
  19. 个人QQ号码推广代码
  20. java实现微信企业付款到银行卡_java实现微信企业付款到个人

热门文章

  1. 51单片机蓝牙小车程序详解
  2. EXCEL中关于角度的输入、输出及转换计算技巧
  3. c语言中数组int*,C语言数组
  4. 计算机的网络技术说课稿模板,精选信息技术说课稿模板汇编五篇
  5. 5s管理中清扫的内容及实施步骤
  6. VC6.0 TeeChart5.ocx注册
  7. 【操作系统】进程通信的几种方式
  8. MATLABR2018自学一本通笔记
  9. CC2530单片机P1寄存器说明
  10. python实现快递地址分拣程序(代码有详细注释)