push(args)可以每次压入多个元素,并返回更新后的数组长度。

var oldArr=[1,2,3]; 
alert(oldArr.push(4,[5,6]))–>5(这里只会将[5,6]当做一个元素来计算,返回更新后的数组长度5) 
此时oldArr–>[1,2,3,4,[5,6]]

pop()函数每次只会弹出最后一个结尾的元素,并返回弹出的元素,如果是对空组数调用pop()则返回undefined。

alert(oldArr.pop())–>[5,6](这里弹出最后一个元素[5,6],而不是6) 
此时oldArr–>[1,2,3,4]

unshift和shift 
这两个方法都是通过对数组的头部进行的操作,其他基本跟push和pop类似,但是在IE中unshift方法返回的是undefined

var oldArr2=[1,2]; 
oldArr2.unshift(3)–>undefined 
此时oldArr2为–>[3,1,2]

oldArr2.shift()–>3 
此时oldArr2为[1,2]

接下来看一下功能强大一点的splice,利用其可以进行数组随意位置的元素添加,删除 ,其操作也是在原有数组上修改 。
splice(start,deleteCnt,args) 中的start表示开始操作下标,deleteCnt表示从开始下标开始(包括该元素)要删除的元素个数,删除操作返回删除的元素。args表示用来替换删除掉的那些元素(可以有多个参数),start和deleteCnt必须为数字,如果不是数字尝试转换,转换失败当做0来处理。

splice必须至少有一个start元素,否则不做任何操作。deleteCnt不存在表示删除start及后面的全部元素(IE下,取0不做删除)。start可以为负数,表示从数组右边结尾处开始计算。deleteCnt如果为负数不做删除,因为不可能删除负个元素。

var oldArr3=[1,2]; 
oldArr3.splice()–>”"(返回空的字符串,不做任何操作,操作后oldArr3–>[1,2]) 
oldArr3.splice(“”)–>[1,2](“”尝试转换为数字失败返回0,所以删除1,2,操作后oldArr3–>[],但是IE下有点恶心,不做任何操作) 
oldArr3.splice(“1a”)–>同上 
odlArr3.splice(0,2)–>[1,2](“从下标0的元素开始,删除两个元素1,2因此删除后oldArr3–>[]) 
oldArr3.splice(0,-1)–>”"(从0下标开始删除-1个元素,故等于没做任何操作,操作后oldArr3–>[1,2]) 
oldArr3.splice(1,1)–>2(从下标1 开始删除1个元素,即删除2,所以删除后oldArr3–>[1]) 
oldArr3.splice(1,4)–>2(从下标1 开始删除4个元素,1开始只有1个元素,故删除2,所以删除后oldArr3–>[1]) 
oldArr3.splice(-1,0,3)–>”"(从下标-1即2元素开始删除0个元素,然后添加元素3,所以操作后oldArr3–>[1,3,2]) 
oldArr3.splice(-1,1,3)–>2(从小标-1即2元素开始删除1个元素,然后添加元素3,操作后为oldArr3–>[1,3])

接下来开始讲concat,这个方法用来连接两个或多个数组,该数组不会改变原来的数组只会返回新的一个数组。连接的时候参数如果为数组,则连接的是数组中的元素。

var oldArr4=[1,2]; 
oldArr4.concat(3,4)–>[1,2,3,4] 
oldArr4.concat(3,4,[5,6])–>[1,2,3,4,5,6](这边添加的是[5,6]中的元素5和元素6) 
oldArr4.concat(3,[4,[5,6]])–>[1,2,3,4,[5,6]](这边最里层的元素[5,6]整个用来添加,而不是拆开)

数组中的排序方法

sort(function)是针对原数组进行的排序,不会生成新的数组。默认sort()不带参数时按照数组中的元素转换成字符串进行比较。

var oldArr5=[3,1,5,7,17] 看这个一般观念上以为对oldArr5排序时oldArr5.sort()会按照数字从小到大排序即返回[1,3,5,7,17],但是看一下结果其实不然返回的是[1,17,3,5,7] 因为比较的时候都被转成字符串。然后对字符串进行一个个的比较如果第一个字符相同则比较第二个,否则直接返回比较结果,因为”17″<”3″所以可想而知排序的结果就不是一般印象中的那个结果了。

sort(function)方法除了默认的无参外还可以传入自定义的排序方法,这样排序的结果完全可以由自己来控制了,想怎么排就怎么排,是不是很爽啊,呵呵。 一般自定义的function比较函数,包含两个参数分别代表用来比较的左元素和右元素。然后通过一定方式返回一个结果,如果返回值大于0表示交换左右元素,如果返回值小于0或等于0则表示不不会交换左右元素。现在来看一下例子

按照数字从大到小排列原有数组 :

var oldArr5=[3,1,5,7,17]; //初始数组 
function mySort(left,right){ 
if(left<right){ 
  return 1;}//如果左边元素小于右边元素则交换两数 
else{ 
  return -1;}//如果左边元素大于等于右边元素不做交换 
}

当然上面的方法可以简化为

funaction mySort(left,right){ return right-left;}

//按照偶数在前奇数在后排序

var oldArr6=[3,6,7,18];//初始数组 
function mySort2(left,right){ 
  if(left%2==0)return -1;//如果左边元素为偶数则不交换 
  if(right%2==0)return 1; //如果右边元素为偶数则交换 
  return 0; //不交换 
}

最后的slice不多讲,只是用来截取原数组中的部分元素,返回一个新的数组,原数组不会改变,其操作方式跟string的slice类似

var oldArr7=[1,2,3,4]; 
oldArr7.slice(0)–>[1,2,3,4] 
oldArr7.slice(0,2)–>[1,2] 
oldArr7.slice(0,0)–>[] 
oldArr7.slice(0,-1)–>[1,2,3] 
oldArr7.slice(-3,-1)–>[2,3] 
oldArr4.slice(-1,-3)–[]

js数组的操作push,pop,shift,unshift的更多相关文章

  1. js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip

    push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度.新的元素将会依次添加到数组的末尾. 该函数属于Array对象,所有主流浏览器均支持该函数. 语法 array.push( ite ...

  2. Js数组的操作push,pop,shift,unshift等方法详细介绍

    js中针对数组操作的方法还是比较多的,今天突然想到来总结一下,也算是温故而知新吧.不过不会针对每个方法进行讲解,我只是选择其中的一些来讲. 首 先来讲一下push和pop方法,这两个方法只会对数组从尾 ...

  3. Js~数组的操作push,pop,shift,unshift

    说几个概念: 队列:先进先出堆栈:先进后出 shift:从集合中把第一个元素删除,返回这个元素的值pop:从集合中把最后一个元素删除,返回这个元素的值 unshift:在集合开头添加一个或者多个元素, ...

  4. 数组方法push() pop() shift() unshift() splice() sort() reverse() contact()浅拷贝 slice()原数组拷贝

    push() pop() shift() unshift() splice() sort() reverse() 参考资料:https://wangdoc.com/javascript/stdlib/ ...

  5. js数组方法push pop shift unshift的返回值

    push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度. pop() 方法用于删除并返回数组的最后一个元素. unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度. s ...

  6. Perl 数组应用详解(push, pop, shift, unshift)

    Perl的数组操作有四大常用函数: push:从数组的末尾加入元素.pop :从数组的末尾取出元素 shift: 从数组的开头取出元素unshift:从数组的开头加入元素 1.push #!/usr/ ...

  7. js push(),pop(),shift(),unshift()

    以前没有太在意这些,这几天看<Javascript 设计模式与开发实践>(不得不说这是一本好书) 发现总是会用到这几个函数,可是有什么区别呢?? 简单来说是两套东西(数据结构时老师详细的讲 ...

  8. JS 数组array方法push, pop, unshift, shift, slice,splice,contact, join, sort

    Array:数组对象用来在单独的变量名中存储一系列的值   定义数组:         1. var arrayObj = new Array();         2. var arrayObj = ...

  9. Vue push() pop() shift() unshift() splice() sort() reverse() ...

    Vue 变异方法 push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度. pop() 方法用于删除并返回数组的最后一个元素. shift() 方法用于把数组的第一个元素从其中删除,并返回 ...

随机推荐

  1. BZOJ3152[Ctsc2013]组合子逻辑——堆+贪心

    题目链接: BZOJ3152 题目大意: 一开始有一个括号包含[1,n],你需要加一些括号,使得每个括号(包括一开始的)所包含的元素个数要<=这个括号左端点那个数的大小,当一个括号包含另一个括号 ...

  2. BZOJ2653middle——二分答案+可持久化线段树

    题目描述 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整.给你一个 长度为n的序列s.回答Q个这样的询问:s的左端点在[a,b]之间,右端点在 ...

  3. Luogu4609 FJOI2016建筑师(斯特林数)

    显然排列中的最大值会将排列分成所能看到的建筑不相关的两部分.对于某一边,将所能看到的建筑和其遮挡的建筑看成一个集合.显然这个集合内最高的要排在第一个,而剩下的建筑可以随便排列,这相当于一个圆排列.同时 ...

  4. 使用android快速开发框架afinal的FinalDb操作android数据库

    http://my.oschina.net/yangfuhai/blog/87459 今天给大家介绍下#afinal#来操作android的数据库sqlite. #afinal#是一个android的 ...

  5. Luogu 1437 [HNOI2004]敲砖块 (动态规划)

    Luogu 1437 [HNOI2004]敲砖块 (动态规划) Description 在一个凹槽中放置了 n 层砖块.最上面的一层有n块砖,从上到下每层依次减少一块砖.每块砖都有一个分值,敲掉这块砖 ...

  6. 使用electron为贪吃蛇游戏创建全局快捷键

    上图就是我们的简体版贪吃蛇游戏,我们可以看到使用键盘上面的上下左右可以对贪吃蛇进行控制. The picture above is our simplified version of Snake Ea ...

  7. Quartz-中断正在执行的任务

    转: Quartz-中断正在执行的任务 2017年11月15日 21:19:17 小小工匠 阅读数:6715更多 所属专栏: Quartz手札   版权声明:[show me the code ,ch ...

  8. C# 同步工作站与SQL服务器的时间

    /// <summary> /// 设置本机时间 /// </summary> public class LocalTimeSync { [DllImport("Ke ...

  9. [译]Golang中的优雅重启

    原文 Graceful Restart in Golang 作者 grisha 声明:本文目的仅仅作为个人mark,所以在翻译的过程中参杂了自己的思想甚至改变了部分内容,其中有下划线的文字为译者添加. ...

  10. 牛客多校第三场 A- PACM Team 背包/记忆路径

    https://www.nowcoder.com/acm/contest/141#question 一眼背包,用四维dp记录在A,B,C,D条件限制下可以获得的最大知识点,但是题目要求输出路径,在输入 ...