function copy(obj) {
let newObj = null; // 声明一个对象来存储拷贝之后的内容
// 判断数据类型是否是复杂的数据类型,如果是则调用自己,如果不是则直接赋值即可!
// 由于null不可以循环但是他的类型又是object,所以这个需要对null进行判断
if (typeof(obj) == 'object' && obj !== null){
// 声明一个变量用以存储拷贝出来的值,根据参数的具体数据类型声明不同的类型来存储
newObj = obj instanceof Array? [] : {};
// 循环obj的每一项,如果里面还有复杂的数据类型的话,则直接利用递归函数再次调用。
for(let i in obj){
newObj[i] = copy(obj[i])
}
} else {
newObj = obj
}
return newObj; // 函数没有返回的值的话,则为undefined
}
let obj = { // 原对象,包含字符串,对象,函数,数组等不同类型。
name: "test",
main:{
a:1,
b:2
},
fn:function(){
},
firends:[1,2,3,[44,55]];
}
let obj1 = copy(obj);
obj1.name = '修改值';
obj1.main.a = 110;
console.log(obj,obj1)
相关推荐
js深拷贝(递归实现)
通过递归可以简单实现对象的深度克隆,但是这种方法不管是ES6还是ES5实现,都有同样的缺陷,就是只能实现特定的object的深度复制(比如数组和函数),不能实现包装对象Number,String , Boolean,以及Date对象,RegExp对象的复制。 下面是完美版的深拷贝 参考自:[https://blog.youkuaiyun.com/liwusen/article/details/78759373](() function istype(obj,type){//判断包装类型的原型 return Objec.
简单讲解浅拷贝和深拷贝
数据结构分成基本数据类型和引用数据类型。浅拷贝和深拷贝就是在这个基础上引入的概念。如果拷贝一个对象时,只对基本数据类型
2026 最新实战教程:AI 重构开发全流程(从需求→上线→运维)
1)做什么系统2)技术栈3)功能模块4)部署要求plaintext我要做一个:待办事项(Todo)全栈应用技术栈:前端:React + TypeScript + Tailwind后端:Node.js + Express + MongoDB部署:Docker + 本地运行(后续可上云)功能:- 增删改查任务- 任务状态切换(完成/未完成)- 简单错误处理请按企业级标准生成:架构设计 + 全部代码 + 接口文档 + 启动命令。
用递归实现深拷贝
深拷贝是指,拷贝对象的具体内容,两个内存地址是自主分配的,拷贝结束之后两个对象虽然存的值是一样的,但是内存地址不一样,两个对象页互相不影响,互不干涉。 下面我们来看一下递归实现深拷贝的具体步骤。 var obj= { "name":"豪豪", "age":22, "job":"程序员", "height":175, "type":{ "character":"tender" }
FPGA实现高效数字下变频:CORDIC与CIC滤波器的Verilog优化设计
本文深入探讨了FPGA实现高效数字下变频的技术方案,重点介绍了CORDIC算法与CIC滤波器的Verilog优化设计。通过详细的算法原理分析、FPGA实现技巧和实战经验分享,展示了如何利用CORDIC的旋转运算替代乘法操作,以及CIC滤波器在降采样中的高效性能。文章还提供了完整的系统集成方案和资源优化策略,为无线通信和雷达信号处理领域的工程师提供了实用参考。
使用CNN/ResNet实现自动调制识别(RML2018.01a)
本文基于RML2018.01a大型数据集,给出CNN及其变体ResNet的信号识别的实现方式(附代码) 目录一、CNN的代码实现1.1 导入包1.2 数据读取及数据集划分1.3 构建CNN模型1.4 模型训练1.5 测试及模型可视化二、ResNet的代码实现 RML2018.01a数据集信息如下: 数据集来源 Over-the-Air Deep Learning Based Radio Signal Classification 调制类型 19种数字调制方式: 32PSK, 16APSK,
递归函数实现对象的深拷贝(JavaScript)
造成这个问题的主要原因在于数组类型和对象的typeof()都是object,由于Array.isArray()可以判断是否是数组,这样一来就一定是判断数组在前,判断对象在后,如果判断对象在前,则后面的判断数组会直接被覆盖掉,即使原对象中的属性存在数组也会以object输出,这个可以在f12开发者工具中查看。将每一数据都进行判断,判断的结果分为数组、对象、其他,对数组和对象进行再一次判断。对对象的深拷贝的难点在于对象的属性值可以是任意类型,而数组的元素可以是任意属性,这样也恰恰是解决它的办法。
JEDEC 标准半导体功率循环热阻测试(JESD51 系列)
【代码】JEDEC 标准半导体功率循环热阻测试(JESD51 系列)
如何使用递归函数来实现一个对象的深拷贝
【代码】如何使用递归函数来实现一个对象的深拷贝。
PINN求解PDE
PINN求解Dirichlet泊松方程 泊松方程引入 −Δu=f,x∈Ω=(0,1)2-\Delta u=f,x \in \Omega=(0,1)^2−Δu=f,x∈Ω=(0,1)2 u=g,x∈∂Ωu=g,x \in \partial \Omegau=g,x∈∂Ω import torch import time import numpy as np import matplotlib.pyplot as plt import torch.nn as nn def UU(X, order,prob):
信号处理算法:离散余弦变换(DCT)_(1).离散余弦变换(DCT)概述
离散余弦变换的数学定义如下:对于一个长度为NNN的离散信号xnx(n)xn,其DCT变换后的系数XkX(k)XkXk∑n0N−1xncosπNn12kk012N−1Xkn0∑N−1xncosNπn21kk012N−1其中,kkk是频率指数,nnn是时间或空间索引。离散余弦变换(DCT)是一种强大的信号处理技术,广泛应用于图像压缩、音频处理、数据压缩等领域。
JavaScript 对象深拷贝的实现
// ./src/helpers/util.ts export function isPlainObject(val: any): val is Object { return toString.call(val) === '[object Object]' } export function deepMerge (...objs: any[]): any { const resul...
AI人工智能 Agent:在仓储物流中的应用
AI人工智能 Agent:在仓储物流中的应用 1. 背景介绍 1.1 问题的由来 仓储物流行业是全球经济运行的基石之一,涉及商品的存储、运输、分拣和配送等多个环节。随着电子商务的普及和消费者对物流速度和精确性的要求不断提高,仓储物流
深拷贝
<script> [{}, [], true] // 定义一个深拷贝函数 接收目标target参数 function deepClone(target) { // 定义一个变量 let result; // 如果当前需要深拷贝的是一个对象的话 if (typeof target === 'object') { // 如果
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
【笔记】JS实现 深拷贝、浅拷贝
1、浅拷贝 Object.assign(target, source1, source2) var initObj = { name: "xiaoming", age: 12, sex:undefined, addAge: function () { return ++this.age; } } var tempObj = {}; Object.assign(tempObj, i...
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
深拷贝和浅拷贝的理解及其实现方式
浅拷贝:只拷贝最外面一层额数据;更深乘次的对象,只拷贝引用; 深拷贝:拷贝多层数据;每一层级别的数据都会拷贝; 拷贝引用的时候,是属于传址,而非传值; 深拷贝和浅拷贝主要针对的是对象的属性是对象(引⽤类型),浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。但深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改变原对象。
最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版
Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。
js 深拷贝
像数组、对象这些变量,我们将其直接赋值给另一个变量,不论改变哪一个变量的值,另一个也会随之改变。 let obj1={name:'a'} let obj2=obj1 obj2.name='b' console.log(obj1.name)// b 为解决这些问题,我们可以采用以下方法。 1、 function deepClone(data){ if(typeof data ==='object' && !(data instanceof RegExp) && !(d
原生js深拷贝
JavaScript有6种基本数据类型 字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol(es6引入的一种原始数据类型 表示独一无二)。和3种引用数据类型对象(Object)、数组(Array)、函数(Function)。 对于引用数据类型 当赋值时会引用同一数据地址 例如: 我们会发现 当改变arr1 数...
前端的深拷贝和浅拷贝_[合格中级前端开发必知]聊聊深拷贝浅拷贝
前言js的深拷贝,浅拷贝问题在项目的开发过程中是频繁出现的。对于一个合格的前端开发者来说,对于深刻理解它们是必要的,并能合理使用深拷贝浅拷贝处理问题。什么是深拷贝,什么是浅拷贝以下我对于它们的理解是:深拷贝:如果是对象a和对象b它们是深拷贝,那么它们不再引用统一内存地址了,也就是它们 老死不相往来了。浅拷贝:对象a只是复制指向对象b的指针,而不复制对象本身。新旧对象它们还是共享同一内存。好了,在脑...
js实现(一层 / 多层)对象/数组的深拷贝
// 深拷贝函数 function deepCopy(obj) { var result = Array.isArray(obj) ? [] : {}; for (var key in obj) { if (obj.hasOwnProperty(key)) { if (typeof obj[key] === 'object') { ...
微信小程序的重点知识点--递归函数--必须要会的
使用递归函数来实现一个对象的深拷贝 function copy(obj) { let newObj = null; // 声明一个对象来存储拷贝之后的内容 // 判断数据类型是否是复杂的数据类型,如果是则调用自己,如果不是则直接赋值即可! // 由于null不可以循环但是他的类型又是object,所以这个需要对null进行判断 if (typeof(obj) == 'object' && obj !== null){ // 声
浅拷贝与深拷贝
一、浅拷贝只拷贝一层,更深层次对象级别的只拷贝引用;所以改变新对象的属性值时,会改变原对象。 Object.assign(target,...sources) 是es6新增方法进行浅拷贝; 二、深拷贝拷贝多层,每一级别的数据都会拷贝;所以改变新对象的属性值时,不会改变原对象。 简便方法:JSON.parse(JSON.stringify(obj)) 使用JavaScript实...
js浅拷贝和深拷贝
递归是指在函数的定义中使用函数自身的方法。递归必须要有个结束条件,我们称之为出口!//15。
1457



被折叠的 条评论
为什么被折叠?



