`
xbcoil
  • 浏览: 126241 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js数组操作(push,pop,shift,unshift,slice,splice,concat,sort)

 
阅读更多

本博客转自,http://www.cnblogs.com/fuyun2000/articles/1964144.html

 

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

首先来讲一下push和pop方法,这两个方法只会对数组从尾部进行压入或弹出,而且是在原数组进行操作,任何的改动都是会影响到操作的数组。push(args)可以每次压入多个元素,并返回更新后的数组长度。pop()函数每次只会弹出最后一个结尾的元素,并返回弹出的元素,如果是对空组数调用pop()则返回undefined。 如果参数是数组则是将整个数组当做一个元素压入到原来的数组当中。并不会产生类似concat合并数组时产生的“拆分现象”,下面看例子

例1:

var oldArr=[1,2,3];

alert(oldArr.push(4,[5,6]))-->5(这里只会将[5,6]当做一个元素来计算,返回更新后的数组长度5)

此时oldArr-->[1,2,3,4,[5,6]]

alert(oldArr.pop())-->[5,6](这里弹出最后一个元素[5,6],而不是6)

此时oldArr-->[1,2,3,4]

oldArr.pop()-->4

oldArr.pop()-->3

oldArr.pop()-->2

oldArr.pop()-->1

 oldArr.pop()-->undefined(空数组弹出)

现在讲完push和pop再来看一下unshift和shift

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

 例2:

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如果为负数不做删除,因为不可能删除负个元素。

好了解释就到这边现在看一下例子,通过例子或许可以更好的理解

例3:

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])

 

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

例4: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

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则表示不不会交换左右元素。现在来看一下例子

例5:

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

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)--[] 

分享到:
评论

相关推荐

    JavaScript数组操作函数汇总

    JavaScript数组操作函数是编程中非常基础且重要的部分,它们提供了对数组进行各种操作的方法,包括添加、删除、合并以及转换等。以下是对标题和描述中提及的数组操作函数的详细说明: 1. **push()**: `push()` 函数...

    Javascript数组操作整理.rar

    6. 操作数组的方法: - `concat()`:连接两个或多个数组,并返回新的数组。 - `slice()`:提取数组的一部分,并返回新数组,原数组不变。 - `splice()`:向/从数组中添加/删除项目,然后返回被删除的项目。 - `...

    Javascript数组及类数组相关原理详解

    数组创建方式有两种 1. var arr = [] 2. var arr = new Array() 如果只有一个参数会指定...改变原数组 push pop shift unshift sort reverse splice 不改变原数组 concat join —&gt; split toString slice 比如 push 函数

    Javascript数组及其操作

    这些方法可以帮助开发者更方便地操作数组,实现各种数据处理和计算任务。 多维数组 Javascript 也支持多维数组,例如: `var myArray = new Array();` `for (var i = 0; i ; i++) {` ` myArray[i] = new Array();...

    浅谈js数组和splice的用法

    数组元素的删除通常使用`splice()`方法进行,也可以使用`pop()`, `shift()`, `slice()`, 和`concat()`等方法。`pop()`方法移除数组最后一个元素并返回它,`shift()`则移除并返回第一个元素,`slice()`返回数组的一个...

    javaScript数组操作笔迹

    下面将详细介绍标题与描述中提到的几个关键的JavaScript数组操作知识点。 ### join(delimiter) `join()` 方法用于将数组的所有元素连接成一个字符串,元素之间通过指定的分隔符 `delimiter` 进行分隔。例如,对于...

    JavaScript jQuery 中定义数组与操作及jquery数组操作

    JavaScript 和 jQuery 中的数组操作是编程中非常基础且重要的部分,尤其在处理数据集合时。在 JavaScript 中,数组是一种特殊的数据结构,可以存储各种类型的数据,包括整型、字符串、对象等。虽然 JavaScript 不...

    js数组操作学习总结.doc

    JavaScript中的数组操作是编程中非常常见且重要的部分,它提供了多种方法来创建、修改和处理数组。以下是对这些操作的详细解释: 1. **shift()**:`shift()` 方法从数组的第一个位置移除元素,并返回移除的元素值。...

    前端Vue日常工作中-Js数组常用方法

    总结Js数组常用方法push(element1, ..., elementN) pop() unshift(element1, ..., elementN) shift()splice(start, deleteCount, item1, ..., itemN) reverse()sort(compareFunction) fill() concat(array1, array2,...

    js代码-js数组push压栈操作

    - 数组的其他方法:`slice`, `splice`, `map`, `filter`, `reduce`等,它们提供了丰富的数组操作功能。 通过理解并熟练运用`push`方法,我们可以更有效地处理和操作JavaScript中的数组,实现各种逻辑和算法。在...

    JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)

    在JavaScript中,数组是一种高效的列表...以上提到的方法都是JS数组操作的基础知识点,对于学习和使用JavaScript进行编程开发至关重要。熟练掌握这些方法可以大大提高开发效率,使得在处理数组类型数据时能够得心应手。

    JavaScript数组push方法使用注意事项

    在实际开发过程中,应当注意push方法返回的是数组的新长度而非数组本身,而pop()、shift()方法返回的是被删除的元素值,unshift()、splice()和slice()方法则用于数组的修改,并且有着各自特定的返回值。掌握这些知识...

    javascript中数组、对象

    JavaScript数组支持多种操作方法,如`push`(在末尾添加元素)、`pop`(移除并返回末尾元素)、`shift`(移除并返回首位元素)、`unshift`(在首位添加元素)、`slice`(截取子数组)、`splice`(插入、删除或替换...

    JavaScript常用的数组操作方法案例1.pdf

    本文将深入探讨两个JavaScript数组操作方法:`push()`和`reverse()`,并提供相关的案例分析。 首先,`push()`方法是用于向数组的末尾添加一个或多个元素,并返回新的数组长度。在案例1中,我们创建了一个包含1到6的...

    JavaScript常用数组操作方法.docx

    ### JavaScript 常用数组操作方法详解 #### 一、前言 在现代Web开发中,JavaScript 是一种不可或缺的语言,而数组则是JavaScript中最基础也是最常用的数据结构之一。数组允许我们存储一系列有序的数据项,这些数据...

    JavaScript程序设计-JavaScript数组.pptx

    JavaScript还提供其他数组操作方法,如`unshift()`在数组开头添加元素,`slice()`截取数组的一部分,`splice()`添加/删除数组元素,`concat()`连接两个或更多的数组,以及`indexOf()`和`lastIndexOf()`查找数组中...

    JavaScript类数组对象转换为数组对象的方法实例分析

    数组对象Array有很多方法:shift、unshift、splice、slice、concat、reverse、sort,ES6又新增了一些方法:forEach、isArray、indexOf、lastIndexOf、every、some、map、filter、reduce等。由于类数组不具有数组所...

    javascript数组

    ### JavaScript 数组详解 #### 一、数组的基本操作 ...通过以上介绍,我们不仅了解了如何创建和操作数组,还深入探讨了数组的各种属性和方法,这将有助于更好地理解和使用 JavaScript 中的数组功能。

    js 数组详细操作方法及解析合集

    ES5及ES6为数组提供了许多可以改变其值的方法,包括`pop()`, `shift()`, `push()`, `unshift()`, `reverse()`, `splice()`, `sort()`, `copyWithin()`, 和 `fill()`。 1. `pop()`方法用于删除数组的最后一个元素,...

    JavaScript常用数组操作方法1

    JavaScript中的数组操作方法是编程中不可或缺的部分,它们提供了丰富的功能,帮助我们高效地处理和操作数据。以下是对标题和描述中提到的一些JavaScript数组操作方法的详细说明: 1. **concat()**: `concat()` ...

Global site tag (gtag.js) - Google Analytics