【JavaScript】详解数组方法 fill()

news2025/1/10 21:10:34

文章目录

    • 一、`fill()`方法简介
    • 二、`fill()`方法的基本用法
    • 三、`fill()`方法的进阶用法
    • 四、实际应用案例
    • 五、注意事项
    • 六、总结

在JavaScript中,fill()方法是数组操作中一个非常有用的方法。它可以快速地用特定值填充数组的全部或部分内容。理解fill()方法的工作机制和使用场景,有助于编写更简洁和高效的代码。本文将详细介绍fill()方法的语法、用法和实际应用。

一、fill()方法简介

  1. 什么是fill()方法?

fill()方法是ES6中引入的一个数组方法,用于将数组的全部或部分元素用指定的值进行填充。这个方法会改变原数组,并返回修改后的数组。

  1. fill()方法的语法
array.fill(value, start, end);
  • value:要填充的值。
  • start:开始填充的索引,默认为0。
  • end:停止填充的索引(不包含该索引),默认为数组长度。

二、fill()方法的基本用法

  1. 用指定值填充整个数组
const array1 = [1, 2, 3, 4];
array1.fill(0);
console.log(array1); // 输出: [0, 0, 0, 0]

在这个示例中,数组array1的所有元素都被填充为0

  1. 填充部分数组

你可以指定填充的开始和结束索引,以便只填充数组的一部分。

const array2 = [1, 2, 3, 4, 5];
array2.fill(0, 1, 4);
console.log(array2); // 输出: [1, 0, 0, 0, 5]

在这个示例中,从索引1开始到索引4(不包括索引4)的元素被填充为0

  1. 使用负数索引

fill()方法支持负数索引,这些索引会被解释为从数组末尾开始的位置。

const array3 = [1, 2, 3, 4, 5];
array3.fill(0, -3, -1);
console.log(array3); // 输出: [1, 2, 0, 0, 5]

在这个示例中,从索引-3(相当于索引2)开始到索引-1(相当于索引4,不包括索引4)的元素被填充为0

三、fill()方法的进阶用法

  1. 用于数组初始化

fill()方法可以方便地初始化一个数组,并用相同的值填充。

const array4 = new Array(5).fill(1);
console.log(array4); // 输出: [1, 1, 1, 1, 1]

在这个示例中,创建了一个长度为5的数组,并用1填充所有元素。

  1. 用于创建多维数组

你可以使用fill()方法和map()方法结合,来创建多维数组。

const rows = 3;
const cols = 3;
const multiArray = new Array(rows).fill(null).map(() => new Array(cols).fill(0));
console.log(multiArray); // 输出: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]

在这个示例中,创建了一个3x3的二维数组,所有元素初始化为0

  1. 重置数组内容

fill()方法可以用于重置数组内容,例如在需要重新开始某个计算或处理时。

let array5 = [1, 2, 3, 4, 5];
array5.fill(0);
console.log(array5); // 输出: [0, 0, 0, 0, 0]

在这个示例中,数组array5的内容被重置为0

四、实际应用案例

案例一:用于生成测试数据

fill()方法可以用于生成大量测试数据,例如初始化一个包含随机数的数组。

const randomArray = new Array(10).fill(0).map(() => Math.floor(Math.random() * 100));
console.log(randomArray); // 输出一个包含随机数的数组

在这个示例中,创建了一个长度为10的数组,并用随机数填充。

案例二:用于初始化棋盘

fill()方法可以用于初始化一个棋盘(如井字棋),并将所有位置设置为空。

const boardSize = 3;
const board = new Array(boardSize).fill(null).map(() => new Array(boardSize).fill(null));
console.log(board); // 输出: [[null, null, null], [null, null, null], [null, null, null]]

在这个示例中,创建了一个3x3的二维数组,并用null初始化所有位置。

五、注意事项

  1. 修改原数组

fill()方法会直接修改调用它的原数组。如果需要保留原数组,可以先创建它的副本。

const originalArray = [1, 2, 3];
const filledArray = originalArray.slice().fill(0);
console.log(originalArray); // 输出: [1, 2, 3]
console.log(filledArray); // 输出: [0, 0, 0]

在这个示例中,通过slice()方法创建了原数组的副本,然后对副本进行填充,原数组保持不变。

  1. 性能考虑

对于大数组,fill()方法提供了一种简洁且高效的填充方式,但在处理超大数组时仍需考虑性能开销。

六、总结

通过本文的介绍,我们详细探讨了JavaScript中的fill()方法,从基本用法到进阶应用,并结合实际案例展示了它的强大功能。掌握fill()方法,可以让你在处理数组时更加得心应手。

  • 基本用法:理解fill()方法的语法和基本操作。
  • 进阶用法:学习如何使用fill()方法进行数组初始化、创建多维数组和重置数组内容。
  • 实际应用:通过实际案例,展示fill()方法在生成测试数据和初始化棋盘中的应用。

推荐:

  • JavaScript
  • react
  • vue

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1969245.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度对话安天王小丰:我们应该从微软“蓝屏”事件学到什么?

ITValue 国内厂商和CrowdStrike的差距,相比于国外厂商和CrowdStrike的差距更大。 作者|张帅 编辑|盖虹达 首发|钛媒体APP ITValue 我们赖以生存的数字世界,可能比想象得还要脆弱。 近日,全球范围内的微软Wi…

基于Gitlab CI+Argo CD的Gitops实践

项目简介 项目说明 本项目构建了一个基于GitOps理念的完整CI/CD管道,旨在实现软件开发与运维的高度自动化和一致性。通过GitLab、GitLab Runner(部署于Kubernetes)、Maven、Java、SonarQube、Harbor以及Argo CD等工具的紧密协作&#xff0c…

二叉树的存储

二叉树的存储 满二叉树或者完全二叉树可以采用顺序存储,普通二叉树一般采用链式存储 节点的结构体原型 typedef int DataType typedef struct node { DataType data; struct node *L; struct node *R; }twotree&#xff…

【数值计算方法】数值积分微分-python实现-p3

原文链接:https://www.cnblogs.com/aksoam/p/18332123 更多精彩,关注博客园主页,不断学习!不断进步! 我的主页 csdn很少看私信,有事请b站私信 博客园主页-发文字笔记-常用 有限元鹰的主页 内容&#xf…

【阅读笔记】红外sensor的ITR、IWR读出模式分析

一、ITR、IWR读出模式分析 InGaAs短波红外探测器具有ITR和IWR两种工作模式。两种工作模式都包括三个相同的工作过程,即复位、积分和读出。每个工作过程的开始与结束都由配置指令码控制,配置指令码包括复位指令、开始积分指令、开始读出指令和读出结束指…

找到学习的引擎,更让你进入心流状态的高效学习

一、心流状态的启动秘籍 1. 简单开始:找到学习的入口 从简单的任务开始,比如整理学习空间或列出学习计划,让大脑逐渐适应学习的节奏。 2. 环境塑造:打造专注的学习空间 清理桌面,减少干扰,比如将手机置…

探索未来之境:揭秘元宇宙(Metaverse)

在科技与想象的交界,一个名为“元宇宙”(Metaverse)的概念正逐渐从科幻走入现实,预示着人类交互与体验的全新纪元。元宇宙不仅是技术的飞跃,更是未来生活方式的蓝图,它模糊了虚拟与现实的界限,开…

Ubuntu配置项目环境

目录 一、Xshell连接云服务器 二、切换到root用户 三、安装jdk 四、安装tomcat 五、安装mysql 1、安装mysql服务器 2、卸载mysql服务器 六、正式进行程序的部署 一、Xshell连接云服务器 要想使用xshell连接上云服务器就需要明确云服务器的几个信息: 1&…

Qt 的径向渐变的类QRadialGradient 学习笔记

QRadialGradient 是 PySide(即 Qt 的 Python 绑定)中用于创建径向渐变的类。径向渐变是一种从中心点向外扩展的渐变效果,与线性渐变不同,线性渐变是沿着一条直线变化的。基本概念 QRadialGradient 可以用来为图形项、形状或背景…

python调用IP摄像头

一、手机端下载软件 至于怎么下载?? 直接去浏览器搜索,并找到对应的下面的这个即可,也可以用我提供的这个链接去下载 IP Camera摄像头app下载-IP Camera无线摄像头app下载 v28.7.3手机客户端 - 多多软件站 二、勾选RTSP服务器&…

【Web 前端开发】vue3开发环境部署

1、安装 Node.js 和 npm 访问 Node.js 官网 下载并安装最新的 LTS 版本。 安装完成后,打开命令行工具, 输入 node -v 和 npm -v 检查安装是否成功。 node -vnpm -v 如下图: 2、安装 Vue CLI 在命令行工具中输入以下命令安装 Vue CLI&…

【刷题汇总 -- 游游的重组偶数、体操队形、二叉树中的最大路径和】

C日常刷题积累 今日刷题汇总 - day0281、游游的重组偶数1.1、题目1.2、思路1.3、程序实现 2、体操队形2.1、题目2.2、思路2.3、程序实现 -- 递归(dfs) 剪枝 3、二叉树中的最大路径和3.1、题目3.2、思路3.3、程序实现 -- 递归树形dp 4、题目链接 今日刷题汇总 - day028 1、游游…

快递进小区太难了!大量快递到底放在哪里?

如今,快递小哥是市民生活中不可或缺的角色,但他们在服务城市、满足市民需求的同时,也会遇到一些不被居民理解的情况。 “为什么不让进小区” “一些高档小区管得严,不让我们快递员进小区送货,但是这个标注是送货上楼的…

Netty 必知必会(四)—— Channel-Pipeline 责任链

一、责任链模式 适用场景: 对于一个请求来说,如果每个对象都有机会处理它,而且不明确到底是哪个对象会处理请求时,我们可以考虑使用责任链模式实现它,让请求从链的头部往后移动,直到链上的一个节点成功处理了它为止 …

openeuler的mariadb数据库安装

下载数据库 yum install mariadb-server 如果出现文件冲突如下删除即可 yum remove selinux-policy-targeted --nobest --nobest 无视需求关系 systemctl enable --now mariadb.service #自启动 mysql_secure_installation 初始化Mysql根据自己需求填y|n 第一次进…

运动耳机界的“冠军之选”!奥运会冠军同款耳机曝光!

近期,相信大家的目光都被奥运会所吸引,作为一个有着多年使用蓝牙耳机经验的专业测评师,在此告诉大家,其实有很多奥运会选手在训练的时候会戴耳机,因为这样不仅可以缓解训练中的疲惫,而且可以增加训练的激情…

Docker Compose方式部署Ruoyi-前后端分离版本

目录 一. 环境准备 二. 制作一个jdk8u202环境的镜像 三. 制作nginx镜像 四. 对项目文件做修改 五. 项目打包 1. 前端打包 2. 后端打包 六. 编写docker-compose.yml 一. 环境准备 主机名IP系统软件版本配置信息localhost192.168.226.25Rocky_linux9.4 git version 2.4…

InfluxDB的安装与使用

目录 1.influxDB的下载地址:https://dl.influxdata.com/influxdb/releases/influxdb-1.8.3_windows_amd64.zip 2.在D盘创建一个influxDB的文件夹 3. 在安装目录输入cmd,执行influxd.exe 4.启动成功 5.下载nssm安装相关服务,下载地址https://nssm.cc/…

Xinstall全渠道统计服务,轻松掌握App用户全生命周期数据

在当今数字化时代,App的推广和运营显得尤为重要。然而,面对复杂多变的推广渠道和用户行为,如何精准地评估渠道效果、提升获客能力,成为了众多App运营者面临的难题。此时,Xinstall作为一站式App全渠道统计服务商&#x…