const deepCopy = (data) => {
    if (data.constructor.name === 'Array') { 
      // 判断为数组类型
      var arrCopy = []
      for (var i = 0, len = data.length; i < len; i++) {
        //遍历数组
        if (data[i] instanceof Object) {
          arrCopy.push(deepCopy(data[i]))
        } else { 
          // 基本类型
          arrCopy.push(data[i])
      return arrCopy;
    } else { // 为对象
      var objCopy = {};
      for (let x in data) {
        if(data[x] instanceof Object){
          objCopy[x] = deepCopy(data[x])
        }else{ // 基本类型
          objCopy[x] = data[x];
      return objCopy;
                                    今天遇到一个问题,我更新了数组里面的数据,但是页面并没有检测到页面的改变。而导致这个原因是,就是浅拷贝和深拷贝的问题。
当我们针对数组对象嵌套比较深时,采用浅拷贝的方式就会出现上述情况。一般也是针对数据结构毕竟深时,采用深拷贝
下面举个针对多层嵌套数组对象的栗子
           const arr = [
			 [{a:'1'},{b:'2'},{c:'3'}],
			 [{a:'1'},{b:'2'},{c:'3'}],
			 [{a:'1'},{b:'2'},{c:'3'}]
                                    filter():创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素(注意:它不会对空数组检测,它不会改变原数组)1、Array.from( ):将对象或字符串转成数组,注意得有length。2、Array.of( ): 将一组值转换为数组。3、copyWithin(target,start(可选),end(可选)):数组内数据的复制替换target:从该位置开始替换数据;start:从该位置开始读取数据,默认为0;end:到该位置停止数据的读取,默认为数组的长度4、find( ):用于
                                    React中的浅复制与深复制
  学习前端不到一年,在编写react框架下的代码时,经常会遇到明明已经改变了props页面却没有重新渲染的问题。于是为自己整理了一下关于react中的浅复制与深复制的区别以及实现方式,希望对刚刚入门前端的童鞋们也有所帮助。
                                    在react hook中使用到深拷贝( let tempBlockData = […blockData]; ),是将state值重新赋值,再进行操作。之所以使用到深拷贝,是为了解决useState定义的state值无法直接更新和操作,所以,为了直接操作state的blockData,先进行深拷贝,然后再用对应的setState进行更新。
什么是深拷贝,什么是浅拷贝?
假设将A复制给B,即B=A,如果B的改变,A也会改变,就是浅拷贝,如果A没有改变,就是深拷贝,(其实深拷贝只针对较为复杂的object类型数据
    <meta charset="UTF-8" />
    <title>React 实例</title>
    <script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
    <script src="https:
                                    项目中遇到个问题,有一个数组参数,删除数组中一个元素,并且重新改变state但是页面没有重新渲染,先面用一个简单的todolist重现下问题
如下渲染出来menu,当我点击删除时触发onClose事件,在onClose中直接对listData进行操作,打印出的数据是删除后的,但是页面没有重新渲染
const data=[
  {name:'小A',age:'10...
前言:最开始意识到深拷贝的重要性是在我使用redux的时候(react + redux), redux的机制要求在reducer中必须返回一个新的对象,而不能对原来的对象做改动,事实上,当时我当然不会主动犯这个错误,但很多时候,一不小心可能就会修改了原来的对象,例如:var newObj = obj; .
                                    最近发现的一个bug让我从react框架角度重新复习了一遍浅拷贝与深拷贝。
   浅拷贝,就是两个变量都是指向一个地址,改变了一个变量,那另一个变量也随之改变。这就是浅拷贝带来的副作用,两个变量会相互影响到,因为它们指向同一个地址。
   深拷贝,就是互相独立,指向的是不同的地址,一个变量改变了,另一个变量不会被影响到。
   react角度:
                                    javascript 数组以及对象深拷贝(复制数组或复制对象)的方法前言在js中,数组对象的复制如果使用=号来进行复制,那只是浅拷贝。如下图演示: 
如上,arr的修改,会影响arr2的值,这显然在绝大多数情况下,并不是我们所需要的结果。 
因此,数组以及对象深拷贝就是javascript的一个基本功了。数组深拷贝条条大道通罗马,实现数组深拷贝,是有好几种方法的。举例如下:for 循环