js数组方法总结

 

1、concat() 方法用于连接两个或多个数组,该方法不会改变现有数组

      语法:arr.concat(arrX,arrX,....,arrX)

      arrX 为必需参数,该参数可以是具体的值,也可以是数组对象,可以为任意多个

2、join()  方法用于把数组中的所有元素放入一个字符串,元素通过指定的分隔符进行分隔

     语法:arr.join(separator)

     separator:可选,指定要使用的分隔符,如果省略该参数,则使用逗号作为分隔符

     返回值为一个字符串,该字符串是通过把arr的每个元素转化为字符串,然后把这些字符串连接起来,在两个元素之间插入separator字符串而生成的

3、pop()  删除并返回数组的最后一个元素

     语法:arr.pop();

     返回值为数组arr的最后一个元素

      pop()方法将删除arr的最后一个元素,把数组长度减1,并且返回它删除的元素的值。如果数组已经为空,则pop()不改变数组,并返回undefined值 

4、push()  向数组的末尾添加一个或多个元素,并返回新的长度     会改变数组的长度

      语法:arr.push() 

      返回值为把指定值添加到数组后的新长度

      push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组。push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。

5.unshift()   向数组的开头添加一个或多个元素  并返回新的长度    该方法会改变数组的长度

语法:arr.unshift(newElement1,newElement2,.....newElementx)

newElement1为必需参数,向数组添加的第一个元素

newElement2,....,newElementx为可选 向数组添加的第2个/若干个元素

返回值为arr的新长度

unshift() 方法将把它的参数插入 arrayObject 的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。该方法的第一个参数将成为数组的新元素 0,如果还有第二个参数,它将成为新的元素 1,以此类推。

请注意,unshift() 方法不创建新的创建,而是直接修改原有的数组。

*该方法在ie中无法正常使用

 6、reverse()   用于颠倒数组中元素的顺序     该方法会改变原有数组

       语法:arr.reverse()

       

 7、shift()  删除并返回数组的第一个元素    该方法会改变原有数组

      语法:arr.shift()

      返回值为原来数组的第一个元素的值

      如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject。

8、slice()  可从已有的数组中返回选定的元素      不会改变原有数组

     arr.slice(start,end)

    

    返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。 

9、sort()    对数组元素进行排序

      语法:arr.sort(sortby)

      参数  sortby 为可选参数,规定排序顺序,必须是函数

      返回值为对数组的引用,数组在原有数组上进行排序,不生成副本

      

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

  • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
  • 若 a 等于 b,则返回 0。
  • 若 a 大于 b,则返回一个大于 0 的值。

 

 10、splice(index,len,[item])该方法会改变原始数组

      splice有三个参数,它可以用来替换/删除/添加/数组内的某一个或几个值

      index->数组开始下标  len-> 替换/删除的长度  item -> 替换的值,删除操作的话 item 设置为空

eg:arr = ['a','b','c','d']

      1)删除  ---  item 不设置

        arr.splice(1,1)  //['a','c','d']   删除起始下标为1,长度为1 范围内的值。如果 len设置为0,则数组不会发生改变

        arr.splice(1,2)  // ['a','d']   删除起始下标为1 长度为2 范围内的值,len设置为2.

      2)替换  ---  item的值即为替换的值

            arr.splice(1,1,'ddd')    //['a','ddd','c','d']     替换起始下标为1,长度为1的内容为 ‘ddd’  len的设置为1  item为‘ddd’ index为1

            arr.splice(1,2,‘ddd’)  //['a','ddd','d']  替换起始下标为1,长度为2的两个值为‘ddd’  ,len设置为2,index设置为1,item为ddd

      3)添加 ---len设置为0,item为添加的值

            arr.splice(1,0,'ttt')    //['a','ttt','b','c','d']  表示在下标为1处添加一项 ‘ttt’

            splice会自动改变数组长度的值

11、toSource()  方法表示对象的源代码。   

       只有 Gecko 核心的浏览器(比如 Firefox)支持该方法,也就是说 IE、Safari、Chrome、Opera 等浏览器均不支持该方法。

       该原始值由 Array 对象派生的所有对象继承。

       toSource() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中

      语法: object.toSource()

       

 12、toString()       把数组转换为字符串,并返回结果                            数组中的元素之间用逗号分隔。

        语法:arr.toString()

        返回值为arrayObject 的字符串表示。返回值与没有参数的 join() 方法返回的字符串相同。

 当数组用于字符串环境时,JavaScript 会调用这一方法将数组自动转换成字符串。但是在某些情况下,需要显式地调用该方法。

 

 13、toLocaleString()          把数组转换为本地字符串

        语法:arr.toLocaleString()

        返回值为  arr的本地字符串表示

首先调用每个数组元素的 toLocaleString() 方法,然后使用地区特定的分隔符把生成的字符串连接起来,形成一个字符串。

14、valueOf()     方法返回 Array 对象的原始值。

该原始值由 Array 对象派生的所有对象继承。

valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。

 arr.valueOf()

15、indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置,如果不存在匹配字符则返回 -1;

       if (Array.prototype.indexOf){   //判断当前浏览器是否支持 } 

16、split

split() 方法用于把一个字符串分割成字符串数组。

语法:stringObject.split(separator,howmany)

separator :必需 字符串或正则表达式 从该参数指定的地方分隔stringObject

howmany:可选。该参数可指定返回数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组,如果没有设置该参数,整个字符串都会被分割,不考虑它的长度

17、eval()

eval()函数可计算某个字符串,并执行其中的js代码  eval(string)

string 必需。要计算的字符串,其中含有要计算的js表达式或要执行的语句

返回值为 通过计算string得到的值(如果有值的话)

该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。

18、向数组添加元素

1)splice()   splice添加元素的方法序号1处已有,此处不再赘述

2)push()     arr.push(''),直接加在最后

3)concat()    使用concat将传入的数组或非数组值与原数组合并,组成一个新的数组并返回

19、filter()

filter()方法将匹配元素集合缩减为匹配指定选择器的元素

如果给定表示 DOM 元素集合的 jQuery 对象,.filter() 方法会用匹配元素的子集构造一个新的 jQuery 对象。所使用的选择器会测试 每个元素;所有匹配该选择器的元素都会包含在结果中。

:even 选择器 选取每个带有偶数index值的元素(比如 2 4 6)

index值从0开始,所有第一个元素是偶数(0)

最常见的用法:与其他元素/选择器一起使用,来选择指定的组中偶数序号的元素

语法:$(":even")

:odd 选取每个带有奇数index值的元素

filter常用情况

1)创建一个数组,判断数组中是否存在某个值

var newarr = [
  { num: 1, val: 'ceshi', flag: 'aa' },
  { num: 2, val: 'ceshi2', flag: 'aa2'  }
]
console.log(newarr.filter(item => item.num===2 ))    //控制台打印 第二条数据所有信息

 2) 去掉空数组空字符串、undefined、null

var arr = ['1','2',undefined, '3.jpg',undefined]
var newArr = arr.filter(item => item)
console.log(newArr)

var arr = ['1','2',null, '3.jpg',null]
var newArr = arr.filter(item => item)
console.log(newArr)

>//空字符串里面不能包含空格
var arr = ['1','2','', '3.jpg','']
var newArr = arr.filter(item => item)
console.log(newArr)

3)去掉数组中不符合项

var arr = [20,30,50, 96,50]
var newArr = arr.filter(item => item>40)
console.log(newArr)

 4)过滤不符合项

var arr = ['10','12','23','44','42']
var newArr = arr.filter(item => item.indexOf('2')<0)
console.log(newArr)

5)数据去重

var arr = [1, 2, 2, 3, 4, 5, 5, 6, 7, 7,8,8,0,8,6,3,4,56,2];
var arr2 = arr.filter((x, index,self)=>self.indexOf(x)===index)  
console.log(arr2); //[1, 2, 3, 4, 5, 6, 7, 8, 0, 56]

20、

21、在Javascript语言中,声明变量使用的都是关键字var,如果不使用var而直接声明变量,则该变量为全局变量

22、 parseInt() 函数可解析一个字符串,并返回一个整数。

23、 按10进制去处理字符串,碰到非数字字符,会将后面的全部无视

function parse2Int(num) {

     return parseInt(num,10);

 }

24、== and === 

一般使用双等来判断(==),如果还需要类型相同那么就用三等(===)。 说一下这两个的区别: == equality 等同,=== identity 恒等。 ==, 两边值类型不同的时候,要先进行类型转换,再比较。 ==,不做类型转换,类型不同的一定不等。 下面分别说明: 先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等: 1、如果类型不同,就[不相等] 2、如果两个都是数值,并且是同一个值,那么[相等]。 3、如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。 4、如果两个值都是true,或者都是false,那么[相等]。 5、如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。 6、如果两个值都是null,或者都是undefined,那么[相等]。 再说 ==,根据以下规则: 1、如果两个值类型相同,进行 === 比较。 2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较: a、如果一个是null、一个是undefined,那么[相等]。 b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。 c、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。 d、任何其他组合,都[不相等]。

25、clearInterval() 

clearInterval() 方法可取消由 setInterval() 设置的 timeout。

clearInterval() 方法的参数必须是由 setInterval() 返回的 ID 值。

26、apply()

apply:调用一个对象的一个方法,用另一个对象替换当前对象。eg:B.apply(A,arguments);即A对象应用B对象的方法

call:调用一个对象的一个方法,用另一个对象替换当前对象。eg:B.call(A,args1,args2);即A对象调用B对象的方法

共同之处:

都“可以用来代替另一个对象调用一个方法,讲一个函数的对象上下文从初始的上下文改变为由thisObj指定的新对象”

不同之处:

apply:最多只能有两个参数--新this对象和一个数组argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里面,如果argArray不是一个有效的数组或arguments对象,那么将导致一个typeError。如果没有提供argArray和thisObj任何一个参数,那么Global对象将被用作thisObj,并且无法被传递任何参数

call:他可以接受多个参数,第一个参数和apply一样,后面则是一串参数列表。这个方法主要用在js对象各方法相互调用的时候,使当前this实例指针保持一致,或者在特殊情况下需要改变this指针,如果没有提供thisObj参数,那么Global对象被用作thisObj

实际上,apply和call的功能是一样的,只是传入的参数列表形式不同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值