js源码-数组中的push()和unshift()方法的源码实现
人话不多,直接上代码,在代码中解析,不足之处请谅解:
push()
Array.prototype._push=function(...value){//在Array原型链上添加_push方法
for(var i=0;i<arguments.length;i++){//按索引从小到大循环数组
this[this.length]=arguments[i];//把入参,按照顺序,依次添加在数组的索引最大值加一的位置
}
}
var arr=[231];//例子
arr._push(1,2,3,4);//调用原型链上的_push方法
console.log(arr);//结果:[231,1,2,3,4]
unshift()
Array.prototype._unshift=function(...value){ //在原型链上新增一个_unshift方法
// this.length+arguments.length-1:数组的最新的最大索引值
// 数组原有的元素需要整体完后挪动的最大临界索引值
for(var i=this.length+arguments.length-1;i>arguments.length-1;i--){
this[i]=this[i-arguments.length]; //此处把原有元素赋值给该元素在数组中新的索引地方
// 第一个for循环就是把原有的元素往后挪,为参说挪出刚刚好的位置索引值
}
for(var k=0;k<arguments.length;k++){//入参只需要正常for循环
this[k]=arguments[k];//数组从0开始往上按顺序添加入参元素
// 第二个for循环其实就是把入参,按顺序在数组头部插入
}
return this.length;//最终返回新数组的长度
}
var item1=[2,3,4];//例子
let currentLength=item1._unshift(1,2222,22222,99999);//自定义插入参数
console.log(item1,currentLength);//打印结果:[1, 2222, 22222, 99999, 2, 3, 4] 7
由于时间文,本次就分享两个方法,后续会陆续推出更多源码案例以及实现;
js源码-数组中的push()和unshift()方法的源码实现的更多相关文章
- js 数组的pop(),push(),shift(),unshift()方法小结
关于数组的一些操作方法小结: pop(),push(),shift(),unshift()四个方法都可改变数组的内容以及长度: 1.pop() :删除数组的最后一个元素,并返回被删除的这个元素的值: ...
- 数组中的push()和pop()方法
push()方法可以接受任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度. pop()方法是从数组末尾移除最后一项,减小数组的length值,然后返回移除的项. var arr = [ ...
- js怎样得出数组中某个数据最大连续出现的次数
1:js怎样得出数组中某个数据最大连续出现的次数 var test=[1,2,3,3,2,2,2,3,3,3,3,5,3,3,3,3,3] ; var j = 0 ; var max ...
- 测试数组push和unshift方法的效率
先贴代码,之后再来补内容 <!DOCTYPE HTML> <html> <head> <title>测试数组push和unshift方法的效率</ ...
- php 返回数组中指定多列的方法
php array_column 方法可以返回数组中指定的一列,但不能返回多列,本文将介绍array_column方法的使用,并用代码演示返回数组中指定多列的方法. 1.array_column说明 ...
- js进阶 12-13 jquery中one方法和trigger方法如何使用
js进阶 12-13 jquery中one方法和trigger方法如何使用 一.总结 一句话总结: 1.one()方法和on()方法的区别是什么? 除了one()只执行一次,其它和on()一模一样,包 ...
- js进阶 10-3 jquery中为什么用document.ready方法
js进阶 10-3 jquery中为什么用document.ready方法 一.总结 一句话总结: 1.document.ready和window.onload的区别:用哪个好? document. ...
- js 巧妙去除数组中的重复项
1.代码如下: var toObject = function(a) { var o = {}; for (var i=0, j=a.length; i<j; i=i+1) { // 这里我调整 ...
- js随机从数组中取出几个元素
JS如何从一个数组中随机取出一个元素或者几个元素. 假如数组为 var items = ['1','2','4','5','6','7','8','9','10']; 1.从数组items中随机取出一 ...
随机推荐
- 【Azure API 管理】为调用APIM的请求启用Trace -- 调试APIM Policy的利器
问题描述 在APIM中,通过门户上的 Test 功能,可以非常容易的查看请求的Trace信息,帮助调试 API 对各种Policy,在Inbound,Backend, Outbound部分的耗时问题, ...
- [C/C++]linux下c-c++语法知识点归纳和总结
1.c/c++申请动态内存 在c++中,申请动态内存是使用new和delete,这两个关键字实际上是运算符,并不是函数. 而在c中,申请动态内存则是使用malloc和free,这两个函数是c的标准库函 ...
- Capstone CS5266替代AG9311 Type-C转HDMI带PD3.0+USB3.0拓展坞方案
Capstone CS5266替代AG9311 Type-C转HDMI带PD3.0+USB3.0拓展坞方案CS5266是 Capstone 最新推出的一款用于USB TYPE-C端口的高度集成.高 ...
- 云南农业职业技术学院 - 互联网技术学院 - 美和易思《MYSQL 高级查询与编程》 综合机试试卷
数据库及试题文档下载:https://download.csdn.net/download/weixin_44893902/14503097 目录 题目:电商平台 mysql 数据库系统管理 一. 语 ...
- 编写Java程序,使用循环结构打印出九九乘法表
编写Java程序,使用循环结构打印出九九乘法表 效果如下: 实现代码: public class Multiplication99 { public static void main(String[] ...
- MySQL8.0.20安装详解
https://blog.csdn.net/yeb112233/article/details/106042867/ alter user root@localhost identified by ' ...
- hadoop 之 nodemanager自动关闭(Secure IO is not possible without native code extensions)
场景 安装好hadoop之后,nodemanager自动关闭.查看日志如下: java.lang.ExceptionInInitializerError at org.apache.hadoop.ya ...
- react中使用immutable
官方文档(https://immutable-js.github.io/immutable-js/docs/#/) 有人说 Immutable 可以给 React 应用带来数十倍的提升,也有人说 Im ...
- Kube-OVN 1.2.0发布,携手社区成员打造高性能容器网络
Kube-OVN 1.2.0 新版本如期而至,支持 Vlan 和 OVS-DPDK 两种类型的高性能网络接口.本次发布得益于社区的壮大,感谢Intel爱尔兰开发团队与锐捷网络开发团队持续积极参与Kub ...
- elementui-日期选择器时间清空报错踩坑
今天在项目中遇到了这个大坑 具体问题:在日期清空时会报错 解决方法:给日期绑定的值添加监听