Array.prototype.push()的理解和手写

devtools/2024/11/7 0:09:32/

1.Array.prototype.push()的用法

Array.prototype.push() 方法用于向数组的末尾添加一个或多个元素,并返回修改后数组的新长度。该方法会直接修改原始数组,而不是创建一个新的数组副本。
以下是 Array.prototype.push() 方法的用法:

javascript">var arr = [1, 2, 3];
// 向数组末尾添加一个元素
arr.push(4);
// 现在 arr 的值为 [1, 2, 3, 4]
// 向数组末尾添加多个元素
arr.push(5, 6);
// 现在 arr 的值为 [1, 2, 3, 4, 5, 6]
// 添加数组作为元素
arr.push([7, 8]);
// 现在 arr 的值为 [1, 2, 3, 4, 5, 6, [7, 8]]
// 获取数组的新长度
var newLength = arr.push(9);
// 现在 arr 的值为 [1, 2, 3, 4, 5, 6, [7, 8], 9]
// newLength 的值为 8

Array.prototype.push() 方法可以接受任意数量的参数,并将它们依次添加到数组的末尾。如果传入的参数是数组,则整个数组作为一个元素添加到数组的末尾。该方法返回添加新元素后数组的新长度。

2.Array.prototype.push()的手写

javascript">Array.prototype._push = function () {let arrLength = 0for (let i = 0; i < arguments.length; i++) {this[this.length] = arguments[i]}return this.length}const nums = [1, 2, 3]const numsLen = nums._push(4, 5, 6)console.log(numsLen);console.log(nums);

3.补充:arguments的使用

当我们不确定有多少个参数传递的时候,可以用arguments来获取。在JavaScript中,arguments实际上它是当前函数的一个内置对象。所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参。

arguments展示形式是一个伪数组,因此可以进行遍历。伪数组具有以下特点:

  • 具有length属性
  • 按索引方式存储数据
  • 不具有数组的push,pop等方法

在定义函数时没有声明参数,但是在调用函数时可以传入参数。在 JavaScript 中,函数可以接受任意数量的参数,即使在函数定义中没有显式声明参数也可以在调用时传入参数。这些参数可以通过函数内部的 arguments 对象进行访问和处理。
下面是一个示例说明:

javascript">// 定义一个函数,没有声明任何参数
function greet() {// 访问参数列表的方式之一是使用 arguments 对象// arguments 对象包含传递给函数的所有参数for (var i = 0; i < arguments.length; i++) {console.log('Hello, ' + arguments[i] + '!');}
}
// 调用函数并传入参数
greet('Alice', 'Bob', 'Charlie');
// 输出:
// Hello, Alice!
// Hello, Bob!
// Hello, Charlie!

在上面的示例中,函数 greet 在定义时没有声明任何参数,但是在调用时传入了三个参数。函数内部通过 arguments 对象访问传入的参数,并进行相应的处理。因此,即使在函数定义中没有声明参数,也可以在调用函数时传入参数。


http://www.ppmy.cn/devtools/131872.html

相关文章

Oracle OCP认证考试考点详解082系列13

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 61. 第61题&#xff1a; 题目 解析及答案&#xff1a; 关于数据库链接&#xff0c;以下哪项陈述是正确的&#xff1f; A. 在一个数据库中…

多模态PaliGemma——Google推出的基于SigLIP和Gemma的视觉语言模型

前言 本文怎么来的呢&#xff1f;其实很简单&#xff0c;源于上一篇文章《π0——用于通用机器人控制的流匹配VLA模型&#xff1a;一套框架控制7种机械臂(改造了PaliGemma和ACT的3B模型)》中的π0用到了PaliGemma 故本文便来解读下这个PaliGemma 第一部分 PaliGemma 1.1 Pal…

软件设计师 7日速成

数据流图和数据字典 数据流图 定义 数据流图是一种图形化的工具&#xff0c;用于描述系统中数据的流动情况。它可以帮助我们可视化数据在系统中的处理过程&#xff0c;包括数据的来源、去向、存储位置以及处理方式。 组成元素 数据流图通常包含以下四个基本元素&#xff1…

ML 系列:机器学习和深度学习的深层次总结( 19)— PMF、PDF、平均值、方差、标准差

一、说明 在概率和统计学中&#xff0c;了解结果是如何量化的至关重要。概率质量函数 &#xff08;PMF&#xff09; 和概率密度函数 &#xff08;PDF&#xff09; 是实现此目的的基本工具&#xff0c;每个函数都提供不同类型的数据&#xff1a;离散和连续数据。 二、PMF 的定义…

智会智展,活动必备

智会智展 APP 各大应用市场均可下载统一链接https://m.malink.cn/s/r6nQVf

【Excel】区域单元格选择(一)

目录 一、无空白区域选择 方式一 方式二 二、有空白区域选择 三、选择指定单元格区域 一、无空白区域选择 方式一 ctrl shift ↓ 方式二 ctrl a 二、有空白区域选择 第一步&#xff1a;先ctrl shift ↓ 选择第一片区域 第二步&#xff1a;再ctrl鼠标左键点击选中…

第02章 MySQL环境搭建

一、MySQL的卸载 如果安装mysql时出现问题&#xff0c;则需要将mysql卸载干净再重新安装。如果卸载不干净&#xff0c;仍然会报错安装不成功。 步骤1&#xff1a;停止MySQL服务 在卸载之前&#xff0c;先停止MySQL8.0的服务。按键盘上的“Ctrl Alt Delete”组合键&#xff0…

ElasticNet Regressor(弹性网络回归) --- 论文实战

一、前言 在《机器学习论文复现实战---linear regression》中通过Pearson 相关性分析,去除了2个高相关性特征 "PN" 和 "AN" ,数据维度变为890*25。(数据集地址) 这里我们不做如何前期处理,直接就将数据放入 ElasticNet 模型中进行训练了。 二、模型训…