首页 > TAG信息列表 > cloneDeep
前端JavaScript深拷贝的三种方法,看了不后悔!!!
深拷⻉ 深拷⻉开辟⼀个新的栈,两个对象属完成相同,但是对应两个不同的地址,修改⼀个对象的属性,不会 改变另⼀个对象的属性 常⻅的深拷⻉⽅式有: _.cloneDeep() jQuery.extend() JSON.stringify() 1. _.cloneDeep() 点击查看代码 const _ = require('lodash'); const obj1 = { a: 1lodash 两个方法记录
1. 深拷贝 比起使用JSON.parse(JSON.stringify(obj)) 来进行深拷贝,cloneDeep方法更完善(JSON方法对Date等类的拷贝有缺陷) 2. 对象比较 lodash 的 isEqual 方法可以从“表面”或“数值层面”上比较两个对象,而不是 JavaScript 默认的从内存地址比较基于 JSON.stringify 的 cloneDeep
const myDeepCopy = JSON.parse(JSON.stringify(myOriginal)); 这种方法缺点很多: 循环引用:JSON.stringify() 的对象中如果有循环引用会抛出异常 Converting circular structure to JSON。 其他数据类型:JSON.stringify() 无法拷贝 Map、Set、RegExp 这些特殊数据类型。 函数:JSON.s深拷贝函数 cloneDeep
function cloneDeep (obj){ // 1.判断是否为null 或undefined if (typeof obj == null ) return obj; // 2.判断是否为日期Date if (obj instanceof Date) return new Date(obj); // 3.判断是否为正则 typeof /\d+/ === 'object' if (obj instanceof RegExp) ret使用lodash.cloneDeep实现深拷贝
安装 npm i --save lodash //将使用的lodash引入使用的组件中 import _ from 'lodash' //使用_.cloneDeep深拷贝(变量) const from = _.cloneDeep(this.addForm)Vue+videoPlayer封装 XVideo 视频组件
主要利用videoPlayer插件实现。 具体操作请看文档,文档链接:https://zhangyaolun.github.io/xpx-components/index.html#/zh-CN/component/XVideo(github打不开的话,下面有效果图) 即拿即用,组件内容: <template> <video-player ref="videoPlayer" name="videoPlayer" id2021-06-17
数组与数组之间过滤 import { cloneDeep, uniqBy, concat, every, filter } from 'lodash'; let usersList = cloneDeep(this.usersList.items); usersList = filter(usersList, d => every(this.users, v => v.node !== d.node)); this.usersList.items =