原生js源码之Array数组reverse方法
reverse
方法将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。
语法:arr.reverse()
下面自己来实现:
Array.prototype.myReverse=function(){if(this instanceof Array){//数组var len=this.length,i=len-1;var res=[];//定义一个数组for(i;i>=0;i--){res.push(this[i]);}this.length=0;//清空原数组Array.prototype.splice.apply(this,[0,0,res]);//将新结果插入到原数组中,这里用apply方法很适用}else{//处理类数组var keys=[],values=[];var len=this.length;delete this['length'];for(var k in this){keys.push(k);values.push(this[k]);}for(var i=0,l=keys.length;i<l;i++){this[keys[i]]=values[len-1-i];}this['length']=len;}return this;//返回结果
}
测试一下 :
var arr = [1,3,5,7,9]
var newArr = arr.myReverse();
console.log("原数组:"+arr);
console.log("新数组:"+newArr);
输出:
原数组:9,7,5,3,1
新数组:9,7,5,3,1
测试一下类数组:
var arr2= {0: 1, 1: 2, 2: 3, length:3};
var newArr2=Array.prototype.myReverse.call(arr2);
console.log(arr2);
console.log(newArr2);
输出:
{0: 3, 1: 2, 2: 1, length: 3}
{0: 3, 1: 2, 2: 1, length: 3}
欢迎指正交流!
原生js源码之Array数组reverse方法相关推荐
- 原生js源码之Array数组的every方法
every 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试,全部通过测试就返回true,一旦有一个元素不通过测试则立马返回false. 下面自己实现一个every var arr = [1 ...
- Vue.js 源码分析(五) 基础篇 方法 methods属性详解
methods中定义了Vue实例的方法,官网是这样介绍的: 例如:: <!DOCTYPE html> <html lang="en"> <head&g ...
- 从template到DOM(Vue.js源码角度看内部运行机制)
写在前面 这篇文章算是对最近写的一系列Vue.js源码的文章(github.com/answershuto-)的总结吧,在阅读源码的过程中也确实受益匪浅,希望自己的这些产出也会对同样想要学习Vue.j ...
- Vue.js 框架源码与进阶 - Vue.js 源码剖析 - 响应式原理
文章目录 一.准备工作 1.1 Vue 源码的获取 1.2 源目录结构 1.3 了解 Flow 1.4 调试设置 1.5 Vue 的不同构建版本 1.6 寻找入口文件 1.7 从入口开始 二.Vue ...
- php tire树,Immutable.js源码之List 类型的详细解析(附示例)
本篇文章给大家带来的内容是关于Immutable.js源码之List 类型的详细解析(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一.存储图解 我以下面这段代码为例子,画 ...
- 【Vue.js源码解析 一】-- 响应式原理
前言 笔记来源:拉勾教育 大前端高薪训练营 阅读建议:建议通过左侧导航栏进行阅读 课程目标 Vue.js 的静态成员和实例成员初始化过程 首次渲染的过程 数据响应式原理 – 最核心的特性之一 准备工作 ...
- JavaScript数字运算必备库——big.js源码解析
概述 在我们常见的JavaScript数字运算中,小数和大数都是会让我们比较头疼的两个数据类型. 在大数运算中,由于number类型的数字长度限制,我们经常会遇到超出范围的情况.比如在我们传递Long ...
- 【笔记-vue】《imooc-vue.js高仿饿了么》、《imooc-vue 音乐app》、《imooc-vue.js源码全方位解析》
20170709 - 20171128:<imooc-vue.js高仿饿了么> 一.第一章 课程简介 1-1课程简介 1.需求分析-脚手架工具-数据mock-架构设计-代码编写-自测-编译 ...
- Evil.js源码解读
https://github.com/duo001/evil.js 火爆全网的 Evil.js 源码解读 火爆全网的 Evil.js 源码解读 什么?黑心996公司要让你提桶跑路了? 想在离开前给你们 ...
最新文章
- 100c之37:爱因斯坦问题
- 如何把纯真ip数据库导入到MySQL数据表中
- Java split(“\\s+“) 和 split(“+“) 有什么区别
- java 销毁线程_线程 学习教程(一): Java中终止(销毁)线程的方法
- 来自后端的突袭? --开包即食的教程带你浅尝最新开源的C# Web引擎 Blazor
- 内存泄露Lowmemorykiller分析
- WHAT IS PYTORCH
- Docker 概念-1
- JQuery使用deferreds串行多个ajax请求
- 2021-04-25
- BLOB/TEXT column 'name' used in key specification without a key length
- 金融信创爆发年,优炫数据库高可用高性能解决方案
- 滴滴23届校招薪资正式开奖!算法岗最高 55w
- 【PdgCntEditor】解决PDF的目录页码和PDF实际页码不一致的问题,书签页码偏移页面偏移功能,PDF页面标签的添加
- MATLAB——求系统的零状态响应
- biopython--PDB.polypepide
- js点击图片打印图像
- 机考怎么作弊_公司想用电脑组织机考,但是人手有限,不能人工监考,可不可以使用电脑控制防止考试作弊呢?...
- paramiko.ssh_exception.SSHexception:Server connection dropped:
- 微服务框架-基础框架