js中数组的常用方法,toString、join、pop、push、shift、unshift、sort、reverse、concat、slice、splice、indexOf、lastIndexOf

1.toString()方法,将数组转化为字符串,数组值用逗号分割的字符串。

let arr = [1, 2, 3, 4]
console.log(arr.toString())  // 1,2,3,4

输出结果:


2.join()方法,跟toString()方法类似,但是join可以规定分割符。

let arr = [1, 2, 3, 4]
console.log(arr.join())  // 1,2,3,4 ---> 什么都不写,同toString
console.log(arr.join(''))  // 1234 ---> 这是把逗号去掉,没有符号分割
console.log(arr.join('-'))  // 1-2-3-4 ---> 以 - 分割

输出结果:


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

let arr = [1, 2, 3, 4]
let arrNull = []
console.log(arr.pop()) //删除最后一个元素,并将删除的元素返回
console.log(arrNull.pop()) // 空数组,pop()返回undefined
console.log(arr) // 返回 [ 1, 2, 3 ] ,改变原数组

输出结果:

注意: pop()里面没有参数,即使有参数,也是删除最后一项

let arr = [1, 2, 3, 4]
console.log(arr.pop(3, 4)) // 输出 4
console.log(arr) // 输出 [1,2,3]

输出结果:



4.push()方法,在数组末尾添加值,可以添加零个、一个或者多个,并返回修改后的数组长度。

let arr = [1, 2, 3, 4]
console.log(arr.push()) // 可以写 0、1、多个参数,返回的是新数组的长度 4
console.log(arr.push(1, 2)) // 可以写 0、1、多个参数,返回的是新数组的长度 6
console.log(arr) // [ 1, 2, 3, 4, 1, 2 ]

输出结果:


5.shift()方法,删除原数组第一项,并返回删除元素的值,如果数组为空则返回undefined。

let arr = [1, 2, 3, 4]
let arrNull = []
let arr1 = [5, 6]
console.log(arr.shift()) // 返回 1
console.log(arr1.shift(1, 2)) // 有参数也是删除数组的第一项,并返回删除元素的值 5
console.log(arrNull.shift()) // 数组为空,则返回 undefined

输出结果:


6.unshift()方法,在数组第一项添加新的值,可以添加零个、一个或者多个,并返回修改后的数组长度。

let arr = [1, 2, 3, 4]
console.log(arr.unshift()) // 不写参数,返回的是新数组的长度 4
console.log(arr.unshift(0)) // 在第一项添加值为0,返回的是新数组的长度 5
console.log(arr) // [ 0, 1, 2, 3, 4 ]
console.log(arr.unshift('a', 'b')) // 在第一项添加 'a','b',返回的是新数组的长度 7
console.log(arr) // ['a', 'b', 0, 1, 2, 3, 4]

输出结果:


7.sort()方法,对数组进行排序(默认是升序),返回的是排序后的数组,原来的数组顺序也改变。

let arr = [4, 2, 5, 1, 3]
let arrA = ['d', 'c', 'a', 'b', 'f']
console.log(arr.sort()) // 返回的是排序后的数组 [ 1, 2, 3, 4, 5 ]
console.log(arr) // 原数组返回的是排序后的数组 [ 1, 2, 3, 4, 5 ]
console.log(arrA.sort()) // 返回的是排序后的数组 [ 'a', 'b', 'c', 'd', 'f' ]
console.log(arrA) // 原数组返回的是排序后的数组 [ 'a', 'b', 'c', 'd', 'f' ]

输出结果:


7.1升序降序可以这样写

function compare (value1, value2) {
  return value2 - value1 // 降序
  // return value1 - value2 // 升序
}
let arr = [4, 2, 5, 1, 3]
console.log(arr.sort(compare)) // [ 5, 4, 3, 2, 1 ]

输出结果:


8.reverse()方法,数组倒序。

let arr = [4, 2, 5, 1, 3]
console.log(arr.reverse()) // [ 3, 1, 5, 2, 4 ]

输出结果:


9.concat()方法,用于连接两个或多个数组。

let arr1 = [1, 2, 3]
let arr2 = [4, 5, 6]
let arr3 = [7, 8, 9]
console.log(arr1.concat(arr2)) // 输出 [ 1, 2, 3, 4, 5, 6 ]
console.log(arr1.concat(arr2, arr3)) // 输出 [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
console.log(arr1) // [1, 2, 3] 原数组不变
console.log(arr2) // [4, 5, 6] 原数组不变
console.log(arr3) // [7, 8, 9] 原数组不变

输出结果:


10.slice()方法,可以从已有的数组中返回选定的元素,slice(start, end),返回一个新的数组,包含从start到end(不包括end)的arrayObject中的元素。参数(开始裁剪,结束位置),开始裁剪位置是必填,结束位置可以选填。(不改变原数组)

let arr = [1, 2, 3, 4]
console.log(arr.slice(0)) // 输出 [1, 2, 3, 4]
console.log(arr.slice(1)) // 输出 [2, 3, 4]
// slice(1, 3) ---> 1是开始位置,3是结束位置(不包含3位置)
console.log(arr.slice(1, 3)) // 输出 [2, 3]

输出结果:


10.1如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2指倒数第二个元素,以此类推。

let arr = [1, 2, 3, 4]
console.log(arr.slice(-1)) // [ 4 ]
console.log(arr.slice(-2)) // [ 3, 4 ]
console.log(arr.slice(-3, -1)) // [ 2, 3 ]

输出结果:


11.splice()方法,可以对数组进行删除,添加,替换。参数(开始拼接的位置,删除元素个数,拼接项1,拼接项2…),改变原数组。

11.1删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数),返回值是被删除的内容。

let arr = [1, 2, 3, 4, 5]
let newArr = arr.splice(0, 2)
console.log(newArr) // 返回的是被删除的两个数 [ 1, 2 ]
console.log(arr) // 原数组改变 [ 3, 4, 5 ]

输出结果:


11.2插入功能, 第一个参数(插入位置),第二个参数(0),第三个参数(插入任意数量的项)。插入可以插入一个或多个数。返回值是空数组。

let arr = [1, 2, 3, 4, 5]
let newArr = arr.splice(1, 0, 'h')

let arr1 = [1, 2, 3, 4, 5]
let newArr1 = arr1.splice(1, 0, 'h', 'g')

console.log(newArr) // 返回值是 [] 无
console.log(arr) // 输出 [ 1, 'h', 2, 3, 4, 5 ]

console.log(newArr1) // 返回值是 [] 无
console.log(arr1) // 输出 [ 1, 'h', 'g', 2, 3, 4, 5 ]

输出结果:


11.3替换功能, 第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项),返回值是被替换的内容

let arr = [1, 2, 3, 4, 5]
let newArr = arr.splice(1, 1, 'h', 'g') // 返回的是被替换的值,[2]
console.log(newArr) // 返回的是被替换的值,[2]
console.log(arr) // 原数组改变 [ 1, 'h', 'g', 3, 4, 5 ]

输出结果:



12.indexOf()方法,得到数据的索引,找不到就返回-1从开头(左)向后(右)查询。有两个参数(第一个:查询的参数,第二个:忽略当前位置之前的所有字符)

12.1string的indexOf()是对数据进行了隐式转换,如果参数是数值它会转换为字符来进行查询然后返回索引,String.prototype.indexOf()使用的是==进行比较判断。

let str = '12341'
console.log(str.indexOf(1)) // 输出 0
console.log(str.indexOf('1')) // 输出 0
console.log(str.indexOf(1, 1)) // 输出 4 ---> 查询1(第一个1),从索引为1(第二个1)开始查询

输出结果:


12.2 Number类型使用,使用indexOf()查找索引会报错。

let num = 1234

console.log(num.indexOf(1)) // 报错
console.log(num.indexOf('1')) // 报错

12.3数组使用indexOf()方法,是不会对数据进行隐式转换,Array.prototype.indexOf()使用的是===进行比较判断。

var arr = [1, 2, 3, '4', 1, 2]
console.log(arr.indexOf(3))  // 输出2
console.log(arr.indexOf('4')) // 输出3
console.log(arr.indexOf(4))  // 输出-1
console.log(arr.indexOf(1, 2)) // 输出 4 ---> 查询1,从索引为2开始查询

输出结果:


*****两个参数的时候*****

比如第二个参数为3,忽略下标为3之前的元素

/****************************** indexOf() ******************************/

// 索引     0    1    2    3    4    5    6    7    8    9
let arr = ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
// indexOf() 是从前面开始往后查询 
// 这个 3 是忽略开始查询的位置(下标为3)的前三个元素,即 h e l
console.log(arr.indexOf('l', 3)) // 输出 3

输出结果:



13.这个lastIndexOf()跟indexOf功能一样,只不过是lastIndexOf()从尾(右)向前(左)查询索引。有两个参数(第一个:查询的参数,第二个:忽略当前位置之后的所有字符)

let arr = [1, 2, 3, 3, 2, 1]
console.log(arr.indexOf(1)) // 输出 0
console.log(arr.lastIndexOf(1)) // 输出 5

输出结果:


*****两个参数的时候*****

比如第二个参数为3,忽略下标为3之后的元素

/****************************** lastIndexOf() ******************************/

// 索引     0    1    2    3    4    5    6    7    8    9
let arr = ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
// lastIndexOf() 是从后面开始往前查询 
// 这个 3 是忽略开始查询的位置(下标为3)之后的元素,即 'o', 'w', 'o', 'r', 'l', 'd'
console.log(arr.lastIndexOf('l', 3)) // 输出 3

输出结果:



14.Math.max.apply(null,数组变量)、Math.min.apply(null,数组变量)求数组最值。

let arr = [1, 2, 3, 4]
console.log(Math.max.apply(null, arr)) // 最大值4
console.log(Math.min.apply(null, arr)) // 最小值1

输出结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值