人话不多,直接上代码,在代码中解析,不足之处请谅解:
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()方法的源码实现的更多相关文章

  1. js 数组的pop(),push(),shift(),unshift()方法小结

    关于数组的一些操作方法小结: pop(),push(),shift(),unshift()四个方法都可改变数组的内容以及长度: 1.pop() :删除数组的最后一个元素,并返回被删除的这个元素的值: ...

  2. 数组中的push()和pop()方法

    push()方法可以接受任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度. pop()方法是从数组末尾移除最后一项,减小数组的length值,然后返回移除的项. var arr = [ ...

  3. 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  ...

  4. 测试数组push和unshift方法的效率

    先贴代码,之后再来补内容 <!DOCTYPE HTML> <html> <head> <title>测试数组push和unshift方法的效率</ ...

  5. php 返回数组中指定多列的方法

    php array_column 方法可以返回数组中指定的一列,但不能返回多列,本文将介绍array_column方法的使用,并用代码演示返回数组中指定多列的方法. 1.array_column说明 ...

  6. js进阶 12-13 jquery中one方法和trigger方法如何使用

    js进阶 12-13 jquery中one方法和trigger方法如何使用 一.总结 一句话总结: 1.one()方法和on()方法的区别是什么? 除了one()只执行一次,其它和on()一模一样,包 ...

  7. js进阶 10-3 jquery中为什么用document.ready方法

    js进阶 10-3  jquery中为什么用document.ready方法 一.总结 一句话总结: 1.document.ready和window.onload的区别:用哪个好? document. ...

  8. js 巧妙去除数组中的重复项

    1.代码如下: var toObject = function(a) { var o = {}; for (var i=0, j=a.length; i<j; i=i+1) { // 这里我调整 ...

  9. js随机从数组中取出几个元素

    JS如何从一个数组中随机取出一个元素或者几个元素. 假如数组为 var items = ['1','2','4','5','6','7','8','9','10']; 1.从数组items中随机取出一 ...

随机推荐

  1. '2'>'10'==true? JS是如何进行隐式类型转换的?

    前言 '2'>'10'返回的true,可能很多人都不是很能理解吧? 在js中,当运算符在运算时,如果两边数据不统一,CPU就无法计算,这时我们编译器会自动将运算符两边的数据做一个数据类型转换,转 ...

  2. 第三十七个知识点: The Number Field Sieve

    第三十七个知识点: The Number Field Sieve 数域筛法(The Number Field Sieve ,NFS)是已知的分解算法中最有效率的.它的运行时间取决于被分解的数的大小而不 ...

  3. Causal Inference

    目录 Standardization 非参数情况 Censoring 参数模型 Time-varying 静态 IP weighting 无参数 Censoring 参数模型 censoring 条件 ...

  4. 使用 Docker 构建和运行自己的镜像

    步骤 首先,从 GitHub 中克隆示例项目: git clone https://github.com/dockersamples/node-bulletin-board cd node-bulle ...

  5. 微信小程序--数据共享与方法共享

    目录 全局数据共享 Mobox npm安装及其注意事项 小程序对 npm 的支持与限制 npm 依赖包的安装与使用 Mobox 1. 全局数据共享 2. 小程序中的全局数据共享方案 3. 使用mobx ...

  6. 分享一篇:sql语句中使用子查询,可能会引起查询的性能问题,查询时间会变长

    前段时间,做自动化适配的时候,查找需要的数据的时候,使用到了dblink,跨数据库实例进行访问,整段sql拼接再加上dblink,在plsql查询的时候,性能还不是很长时间,最多2分钟可以查到,前期调 ...

  7. Linux登录时,下游回显非常慢

    问题现象 登录linux时,远程连接正常,[root@...]回显非常慢,在执行脚本时,很容易导致命令下发错乱 原因分析 家目录下的.bash_history文件太大,导致每次登陆时读取这个文件耗时太 ...

  8. Xshell 6 首次连接虚拟机 CentOS 7.6报错:/usr/bin/xauth: file /root/.Xauthority does not exist

    使用 Xshell 6 首次连接虚拟机 CentOS 7.6 出现这样的提示: /usr/bin/xauth: file /root/.Xauthority does not exist 解决: 只需 ...

  9. Spark-寒假-实验2

    1. 计算级数 代码: import scala.io.StdIn object jishu { def main(args:Array[String]) { var Sum=0.0 println( ...

  10. 1.IO流

    1.组成部分 File.FileInputStream.FileOutStream.FileWriter.FileReader 2.File pathSeparatorChar ; separator ...