在没风的地方找太阳  在你冷的地方做暖阳 人事纷纷  你总太天真  往后的余生  我只要你 往后余生  风雪是你  平淡是你  清贫也是你 荣华是你  心底温柔是你  目光所致  也是你 想带你去看晴空万里  想大声告诉你我为你着迷 往事匆匆  你总会被感动  往后的余生  我只要你 往后余生  冬雪是你  春花是你  夏雨也是你 秋黄是你  四季冷暖是你  目光所致  也是你 往后余生  风雪是你  平淡是你  清贫也是你 荣华是你  心底温柔是你  目光所致  也是你
jQuery火箭图标返回顶部代码 - 站长素材

js实现数组浅拷贝和深拷贝

一、浅拷贝的实现方式

方法一:通用循环

function shallowCopy(obj) {
  if (typeof obj !== 'object') return;

  const newObj = obj instanceof Array ? [] : {};

  for(let key in obj) {
    if (obj.hasOwnProperty(key)) {
      newObj[key] = obj[key];
    }
  }

  return newObj;
}

 

以下方法,如果是单层数据,则可实现深拷贝的效果,如果是复杂多层数据,则为浅拷贝。

方法二:Object.assign

const newObj = Object.assign({}, oldObj);

方法三:Array.slice

const newArray = oldArray.slice();

方法四:Array.concat

方法四:Array.concat

方法五:es6

const { ...newObj } = oldObj;
const [ ...newArray ] = oldArray;

二、深拷贝的实现方式

方法一:通用循环(递归)

function deepCopy(obj) {
  if (typeof obj !== 'object') return;

  const newObj = obj instanceof Array ? [] : {};

  for(let key in obj) {
    if (obj.hasOwnProperty(key)) {
      newObj[key] = typeof obj === 'object' ? deepCopy(obj[key]) : obj[key];
    }
  }

  return newObj;
}

方法二:JSON.stringify,JSON.parse(不能拷贝函数)

const newObj = JSON.parse(JSON.stringify(oldObj));

 

posted @ 2020-09-11 15:38  艺术诗人  阅读(1255)  评论(0编辑  收藏  举报