JS解决 Array.fill()参数为对象指向同一个引用地址的问题

JS中,数组的fill()方法可以用来将一个固定值填充到数组中的每一个元素上。但是当传递的参数为对象时,会出现指向同一个引用地址的问题。因此,为了解决这个问题,我们可以采取以下几种方案。

方案一:使用 ES6 中的 Array.from() 方法

在 ES6 中,Array.from() 方法可以将任何可迭代对象转换为一个数组。因此,我们可以先使用该方法生成一个全是空对象的数组,然后再使用map()方法将每一个空对象填充为我们想要的数据。

const arr = Array.from({ length: 5 }, () => ({})); 
arr.map(item => {
  Object.assign(item, {name: '张三', age: 18});
});

使用以上方法,每个数据对象都将是不同的,它们互不影响。

方案二:使用 JSON 序列化和反序列化

我们可以使用 JSON 序列化和反序列化的方法来实现拷贝对象,从而达到解决相同引用地址的问题。

const obj = { name: '张三', age: 18 };
const arr = new Array(5).fill(JSON.parse(JSON.stringify(obj)));

以上方法先将对象转成字符串再反序列化成对象,这样就会生成不同的对象实例,从而解决了相同引用地址的问题。

总结

以上就是两种解决Array.fill()参数为对象指向同一个引用地址的问题的方法。无论是使用Array.from()方法还是使用 JSON 的序列化和反序列化方法,都可以有效地解决这个问题,具体使用哪种方法视场景而定。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS解决 Array.fill()参数为对象指向同一个引用地址的问题 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • javascript将16进制的字符串转换为10进制整数hex

    要将16进制的字符串转换为10进制整数hex,可以使用以下代码: let hex = "1a"; // 16进制字符串 let dec = parseInt(hex, 16); // 将16进制字符串转换为10进制整数 console.log(dec); // 输出10进制整数16 解析上述代码: 第一行,定义一个16进制字符串 第二行,…

    node js 2023年6月8日
    00
  • ES6标准 Arrow Function(箭头函数=>)

    ES6标准 Arrow Function(箭头函数=>)攻略 ES6标准 Arrow Function是一个非常实用的函数特性,它能够简化函数定义的写法,同时提高代码可读性。本文将为您详细讲解 Arrow Function 的语法、作用、适用场景和注意事项。 Arrow Function 的语法 Arrow Function 的语法结构为: (para…

    node js 2023年6月8日
    00
  • 学习Nodejs之fs模块的使用详解

    学习Nodejs之fs模块的使用详解 Node.js中的文件系统(fs)模块允许我们进行包括读取、写入、修改、删除等操作的文件系统操作。在本篇攻略中,我们将深入学习fs模块的使用方法。 安装fs模块 在Node.js中,我们可以直接使用fs模块。不需要进行安装或者引入操作。 读取文件 使用fs模块的readFile()方法可以读取文件内容。语法如下: fs.…

    node js 2023年6月8日
    00
  • Node.js 8 中的重要新特性

    Node.js 8中引入了许多重要新特性,这些特性可能会改变您开发应用程序的方式。下面我们将一一介绍这些新特性。 1. 异步迭代器 Node.js 8中引入了异步迭代器,这是对迭代器ES6规范的扩展。异步迭代器允许我们在处理大量异步数据时更加方便地使用for await…of结构。 const fetch = require(‘node-fetch’);…

    node js 2023年6月7日
    00
  • 详解Node.js access_token的获取、存储及更新

    详解Node.js access_token的获取、存储及更新 在开发微信公众号等基于微信平台的应用时,我们通常需要使用access_token进行接口调用。本文将详细介绍Node.js获取、存储和更新access_token的完整攻略。 获取access_token 获取access_token需要向微信服务器发送GET请求,具体的接口地址为: https…

    node js 2023年6月8日
    00
  • 详解nodejs实现本地上传图片并预览功能(express4.0+)

    以下是详解“详解nodejs实现本地上传图片并预览功能(express4.0+)”的完整攻略。 1. 确定目标 本文将讲解如何使用 Node.js 和 Express4.0+ 实现本地上传图片并预览功能。具体来说,我们要实现以下功能: 用户可以在网页上选择一张本地图片,并将其上传至服务器; 上传完成后,网页上会立即显示上传的图片以供用户预览。 2. 编写服务…

    node js 2023年6月8日
    00
  • 只有 20 行的 JavaScript 模板引擎实例详解

    20 行 JavaScript 模板引擎实例详解 概述 在前端开发中,模板引擎是一项必不可少的技术。本文将详细讲解使用 JavaScript 实现一个只有 20 行的模板引擎的过程。 实现 下面是 20 行 JavaScript 模板引擎的核心代码: function template(tpl, data) { return tpl.replace(/\{\…

    node js 2023年6月8日
    00
  • 一文详解如何在IDEA中配置Node.js

    下面是关于如何在IDEA中配置Node.js的完整攻略: 1. 下载和安装Node.js 首先,我们需要从官网(https://nodejs.org/)下载和安装Node.js。安装成功后,我们可以在终端输入以下命令来检查一下Node.js是否成功安装: node -v 如果成功安装,会显示Node.js的版本号。 2. 安装Node.js插件 在IDEA中…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部