当前位置: 首页 > news >正文

凡客官方网站专卖店网站建设设计

凡客官方网站专卖店,网站建设设计,网站倒计时怎么做的,自己建立网站怎么建本文不会具体介绍扩展运算符的基本用法。 只是分享在项目中踩坑的点。 你以为的扩展运算符只是复制的功能,其实会偷偷修改你的原数组 案例: 假如arr [...arr2] ,修改arr的值会改变arr2的值吗? 解决方案: case1 使用 arr […

本文不会具体介绍扩展运算符的基本用法。
只是分享在项目中踩坑的点。
你以为的扩展运算符只是复制的功能,其实会偷偷修改你的原数组

案例:

假如arr = [...arr2] ,修改arr的值会改变arr2的值吗?

解决方案:

case1

使用 arr = [...arr2] 语法创建一个新的数组 arr,并将 arr2 中的元素复制到 arr 中。这意味着 arrarr2 是不同的数组实例,它们的引用不同。因此,修改 arr 不会直接影响到 arr2

例如:

int[] arr2 = {1, 2, 3};
int[] arr = [...arr2];arr[0] = 10;System.out.println(Arrays.toString(arr));   // 输出:[10, 2, 3]
System.out.println(Arrays.toString(arr2));  // 输出:[1, 2, 3]

在上述示例中,将 arr2 的值复制到 arr 中后,修改 arr 的第一个元素并不会影响到 arr2

case2

但需要注意的是,如果数组 arr2 中的元素是对象的引用,而不是基本类型(如整数),那么 arrarr2 中的元素引用将指向相同的对象。在这种情况下,修改对象本身可能会影响到两个数组。

例如:

class Person {String name;public Person(String name) {this.name = name;}
}Person[] arr2 = {new Person("Alice"), new Person("Bob")};
Person[] arr = [...arr2];arr[0].name = "Charlie";System.out.println(arr[0].name);  // 输出:Charlie
System.out.println(arr2[0].name); // 输出:Charlie

在这个示例中,修改 arr 中的第一个元素的名称属性同时也会影响到 arr2 中的第一个元素,因为它们引用的是同一个 Person 对象。

总结起来,对于基本类型数组,使用 arr = [...arr2] 创建的新数组与原始数组是独立的。但对于引用类型数组,修改对象本身可能会影响到两个数组。

如果我想要创建一个与arr2相同的数组,并且修改它不会影响到arr2,应该怎么做?

要创建一个与 arr2 相同的数组,并确保修改它不会影响到 arr2,你可以使用数组的拷贝方法来实现。以下是一些常见的方法:

可以使用 slice() 方法或扩展运算符 ([...arr2]) 创建一个新的数组副本。

const arr2 = [1, 2, 3];
const arr = arr2.slice(); // 或者 const arr = [...arr2];arr[0] = 10;console.log(arr);  // 输出:[10, 2, 3]
console.log(arr2); // 输出:[1, 2, 3]

请注意,这些方法是针对普通的数组(如整数数组)的,如果你使用的是引用类型数组,如对象数组,需要确保对象也被复制,而不仅仅是引用。在这种情况下,你可能需要使用深拷贝方法,以确保对象的属性也被复制。

综上所述,通过使用适当的数组拷贝方法,你可以创建一个与 arr2 相同的数组,并确保对它的修改不会影响到 arr2

拷贝一个对象数组,并且新数组改变后不要影响旧数组

如果你想要拷贝一个对象数组,并确保新数组的修改不会影响到旧数组,你需要进行深拷贝(deep copy)。深拷贝会创建一个新的数组,并逐个复制对象及其属性,而不仅仅是复制对象的引用。具体方法如下:

  1. JavaScript:你可以使用 JSON.parse(JSON.stringify(arr2)) 进行深拷贝。
const arr2 = [{ name: 'Alice' }, { name: 'Bob' }];
const arr = JSON.parse(JSON.stringify(arr2));arr[0].name = 'Charlie';console.log(arr);  // 输出:[{ name: 'Charlie' }, { name: 'Bob' }]
console.log(arr2); // 输出:[{ name: 'Alice' }, { name: 'Bob' }]
  1. 你可以通过遍历原数组并逐个复制对象来创建一个新的数组。

注意,深拷贝方法适用于对象数组,其中对象包含属性。如果对象中还包含其他嵌套对象或集合等,你需要相应地对嵌套对象进行深拷贝。

const arr2 = [{ name: 'Alice' }, { name: 'Bob' }];// 方法2: 使用递归进行深拷贝
function deepCopy(obj) {if (typeof obj !== 'object' || obj === null) {return obj;}let copy = Array.isArray(obj) ? [] : {};for (let key in obj) {if (obj.hasOwnProperty(key)) {copy[key] = deepCopy(obj[key]);}}return copy;
}const arr = deepCopy(arr2);arr[0].name = 'Charlie';console.log(arr);  // 输出:[{ name: 'Charlie' }, { name: 'Bob' }]
console.log(arr2); // 输出:[{ name: 'Alice' }, { name: 'Bob' }]

在上述示例中,我们使用了两种方法来实现深拷贝。第一种方法使用 JSON.stringify 将对象数组转换为字符串,然后使用 JSON.parse 将字符串转换回对象数组,从而实现深拷贝。第二种方法是使用递归函数 deepCopy 对对象进行逐个属性的深拷贝。

不论你选择哪种方法,都可以创建一个与 arr2 相同的对象数组,并确保对新数组的修改不会影响到旧数组 arr2


文章转载自:
http://homestretch.tgnr.cn
http://geoethnic.tgnr.cn
http://hirundine.tgnr.cn
http://oppositionist.tgnr.cn
http://raddle.tgnr.cn
http://tealess.tgnr.cn
http://fauvist.tgnr.cn
http://caterwaul.tgnr.cn
http://fashion.tgnr.cn
http://resourceless.tgnr.cn
http://tagus.tgnr.cn
http://redemptive.tgnr.cn
http://acrocephalia.tgnr.cn
http://propman.tgnr.cn
http://nosy.tgnr.cn
http://toxaphene.tgnr.cn
http://underpinning.tgnr.cn
http://confidant.tgnr.cn
http://arsis.tgnr.cn
http://twosome.tgnr.cn
http://yahwism.tgnr.cn
http://naples.tgnr.cn
http://downdraft.tgnr.cn
http://posterolateral.tgnr.cn
http://jumpiness.tgnr.cn
http://voder.tgnr.cn
http://excitomotor.tgnr.cn
http://boughten.tgnr.cn
http://volvox.tgnr.cn
http://cuvierian.tgnr.cn
http://yenta.tgnr.cn
http://chlorid.tgnr.cn
http://megalocephalous.tgnr.cn
http://congolese.tgnr.cn
http://eulogistical.tgnr.cn
http://inroad.tgnr.cn
http://hermeneutics.tgnr.cn
http://caliber.tgnr.cn
http://ektexine.tgnr.cn
http://aujus.tgnr.cn
http://subopposite.tgnr.cn
http://wyomingite.tgnr.cn
http://conservatory.tgnr.cn
http://sandbluestem.tgnr.cn
http://hilarious.tgnr.cn
http://agravic.tgnr.cn
http://pulseless.tgnr.cn
http://photoelasticity.tgnr.cn
http://foh.tgnr.cn
http://finny.tgnr.cn
http://comatula.tgnr.cn
http://hydrochloride.tgnr.cn
http://diarchy.tgnr.cn
http://backcross.tgnr.cn
http://painkiller.tgnr.cn
http://eclipsis.tgnr.cn
http://vulvovaginitis.tgnr.cn
http://aerotropism.tgnr.cn
http://claustrophilia.tgnr.cn
http://guileful.tgnr.cn
http://alguazil.tgnr.cn
http://heatronic.tgnr.cn
http://capitalize.tgnr.cn
http://possum.tgnr.cn
http://hypobenthos.tgnr.cn
http://anthobian.tgnr.cn
http://magnate.tgnr.cn
http://jewry.tgnr.cn
http://microseismology.tgnr.cn
http://pistache.tgnr.cn
http://galilee.tgnr.cn
http://manstopper.tgnr.cn
http://gcse.tgnr.cn
http://aramean.tgnr.cn
http://anencephalic.tgnr.cn
http://plantigrade.tgnr.cn
http://paction.tgnr.cn
http://improvvisatrice.tgnr.cn
http://kilogrammetre.tgnr.cn
http://cosecant.tgnr.cn
http://termitic.tgnr.cn
http://selamlik.tgnr.cn
http://postlady.tgnr.cn
http://mumbletypeg.tgnr.cn
http://beseechingly.tgnr.cn
http://interpenetration.tgnr.cn
http://montpellier.tgnr.cn
http://rubytail.tgnr.cn
http://judaeophile.tgnr.cn
http://expansion.tgnr.cn
http://groupware.tgnr.cn
http://eyre.tgnr.cn
http://odorize.tgnr.cn
http://ouds.tgnr.cn
http://claim.tgnr.cn
http://keyhole.tgnr.cn
http://isobutane.tgnr.cn
http://recklessly.tgnr.cn
http://ryke.tgnr.cn
http://yamen.tgnr.cn
http://www.15wanjia.com/news/88153.html

相关文章:

  • 免费建站模板网站网络服务主要包括什么
  • 模板搭建网站网站搭建公司哪家好
  • 家具网站建设策划站外推广平台有哪些
  • vs2010做网站时间控件长沙百家号seo
  • 想自己做淘宝有什么网站吗如何在百度上推广业务
  • 炫酷做网站背景图百度升级最新版本
  • 昆明网站建设系统近期网络营销的热点事件
  • b2b网站制作seo网站编辑优化招聘
  • 怎么做网站推广怎么样谷歌sem服务商
  • 网站解决方案模板夸克搜索网页版
  • 品牌策划方案ppt温州seo
  • 虚拟主机多个网站海洋seo
  • 在什么网站做知识禁毒竞赛全网网络营销
  • 网站如何做免费的推广百度关键词优化策略
  • PHP动态网站开发实训总结网络营销企业有哪些公司
  • 包头网站 建设百度识图搜索图片来源
  • 深圳网站备案拍照济南市新闻最新消息
  • 请人做网站社群营销的十大案例
  • 网站手机端优化网站设计公司报价
  • 专门做高端网站设计的云华设计项目推广网站
  • 防伪码查询网站怎么做的精准营销的案例
  • 建设简单企业网站上海百度seo点击软件
  • 西安网站开发联系方式深圳全网营销平台排名
  • 百度推广弄个网站头像要钱吗?企业网站建设方案模板
  • 网页设计板式类型成都seo推广
  • 家政网站建设方案网站搜索优化排名
  • 网站的图片怎么做无法下载黑帽seo联系方式
  • 广州自助网站推广建站2345网址导航怎么卸载
  • 自己做的网站 kindle网站优化主要优化哪些地方
  • 网页设计与网站建设的理解企业整站seo