数组操作方法汇总

数组操作方法汇总

1. 转字符串方法

toString : 数组转字符串

join : 数组转字符串

split: 字符串转数组

以上方法会生成新数组,不影响原数据


// toString
let a = [1,2,3,'name','bbb'];
a.toString()//===> "1,2,3,name,bbb"
let a = [1,2,3,'name',{a:[123]}];
a.toString()//===> "1,2,3,name,[object Object]"
let a = [1,2,3,'name',[1,2,[4,5,6]]];
a.toString()//===>"1,2,3,name,1,2,4,5,6"

// `join`
let a = [1,2,3,'name','bbb'];
a.join()//===> "1,2,3,name,bbb"
let a = [1,2,3,'name',{a:[123]}];
a.join()//===> "1,2,3,name,[object Object]"
let a = [1,2,3,'name',[1,2,[4,5,6]]];
a.join()//===>"1,2,3,name,1,2,4,5,6"

// split
let a = 'yellow pink red black white';
a.split(' ')//===>["yellow", "pink", "red", "black", "white"]

2.堆栈方法

push : 在末尾添加数组元素(返回添加后的数组长度)

unshift : 在头部添加数组元素(返回添加后的数组长度) 可添加多个

pop : 在尾部删除元素,无参数(返回删除的元素)

shift : 在头部删除一个元素,无参数(返回删除的元素)

以上方法均影响原数组

// 添加
let b = [1,2,3];
b.push(4)//===> 返回4, b = [1, 2, 3, 4]
b.unshift(0)//===>返回5,b = [0, 1, 2, 3, 4]
b.unshift(7,8,9)//===>返回8,b = [7, 8, 9, 0, 1, 2, 3, 4]

// 删除
let b = ['yellow','pink','black'];
b.pop()//===> 返回'black', b = ['yellow','pink']
b.shift()//===>返回'yellow',b = ['pink']

3.排序方法

reverse : 倒序排列

sort : 正/倒序排序/随机排序

以上方法均影响原数组

// 倒序排序 
let c = [1,2,3,4,5,6];
c.reverse()//===> [6, 5, 4, 3, 2, 1]
let d = ['apple','peach','orange']
d.reverse()//===> ["orange", "peach", "apple"]

// sort方法可实现正序和倒叙
// 正序:默认,无参数
// 倒叙:参数为function(a,b){ return b-a }
let c = [5,7,1,3,9,5];
c.sort()//===> [1, 3, 5, 5, 7, 9]
c.sort((a,b)=> b-a)//===>[9, 7, 5, 5, 3, 1]

// sort实现随机排序
let c = [1,2,3,4,5,6];
function compate(){
    return Math.random() - 0.5
}
c.sort(compate)//===>[4, 5, 6, 3, 1, 2]

4.数组拼接

concat : 数组拼接,数组1拼接数组2,数组1在前,数组2在后

[...] : 扩展运算符,三点表达式

以上方法会生成新数组,不影响原数组

// concat  
let e = [1,2,3]
let f = [4,5,6]
e.concat(f)//===>[1, 2, 3, 4, 5, 6]
f.concat(e)//===>[4, 5, 6, 1, 2, 3]
console.log(e)//===>(3) [1, 2, 3]
console.log(f)//===>(3) [4, 5, 6]

e.concat(4,5)//===>[1, 2, 3, 4, 5]
e.concat([4,5])//===>[1, 2, 3, 4, 5]
e.concat([4,[5,6]])//===>[1, 2, 3, 4, [5,6]]
e.concat([4,[5,6,[7,8]]])//===>[1, 2, 3, 4, [5,6,[7,8]]]

// [...]
[...f,5,6]//===>[4, 5, 6, 5, 6]
[...f,5,[4,5]]//===>[4, 5, 6, 5,[4,5]]

5.删改方法

slice : 截取数组**[开始,结束)**, 左闭右开,还可以将类数组转换为数组,不影响原数组

splice : 裁减/替换或新增数组元素(start, deletCount,…items),结合三个参数用法实现不同功能,影响原数组

// 返回新数组,不影响原数组
// array.slice(start, end)
let k = [1,2,3,4,5,6,7,8,9]
k.splice(3)//===>[4, 5, 6, 7, 8, 9]
k.slice(3,6)//===>[4, 5, 6]
// 当参数为负数时,由后往前截取
k.slice(-2)//==>[8, 9]
k.slice(-4,-1)//===>[6, 7, 8]
k.slice(4,-1)//===>[5, 6, 7, 8]
// 总结起来就是,正数从开头开始正序截取,负数从结尾开始正序截取,如果计算得出start和end反了,则输出空数组[]

// 类数组转换为数组
let str = '1234556789'
Array.prototype.slice.call(str)//===>["1", "2", "3", "4", "5", "5", "6", "7", "8", "9"]
function arrTest(){
    console.log(Array.prototype.slice.apply(arguments))
}
arrTest(3,4,6,{name:'a'})//===>[3, 4, 6, {name:'a'}]

// splice 返回删除元素组成的数组,会影响原数组,原数组为被裁减后的数组
// array.slice(start, deletCount,...items)
// 第一个参数值为裁减开始下标,第二个参数为裁减个数,第三个参数为替换裁减区域的参数.
let k = [1,2,3,4,5,6,7,8,9]
k.splice(1,2)//===>[2, 3]
console.log(k)//===>[1, 4, 5, 6, 7, 8, 9]
k.splice(1,2,0,0,0)//===>[4, 5]
console.log(k)//===>[1, 0, 0, 0, 6, 7, 8, 9]
// 第一个参数也可以是负数
k.splice(-2)//===>[8, 9]
console.log(k)//===>[1, 0, 0, 0, 6, 7]
k.splice(-2,2,9,9,9,9,9,9)//===>[6, 7]
console.log(k)//===>[1, 0, 0, 0, 9, 9, 9, 9, 9, 9]

6.查找方法

indexOf : 查找数组元素,返回第一个找到的元素下标,找不到返回-1

lastIndexOf: 查找数组元素,返回最后一个找到的元素下标,找不到返回-1

includes : 查找数组是否包含某一元素,包含则返回true,不包含返回false

find : 查找满足函数条件的第一个值,找不到返回undefined

findIndex : 查找满足函数条件的第一个值得下标,找不到返回-1

// indeXOf/lastIndexOf/includes
let q = [1,2,3,4,5,7,6,6,8]
q.indexOf(6)//===>6
q.lastIndexOf(6)//===>7
q.indexOf(11)//===>-1
q.lastIndexOf(11)//===>11
q.includes(6)//===>true
q.includes(11)//===>false

// find/findIndex
q.find(function(num){ return num>5 })//===>7
q.findIndex(function(num){ return num>5 })//===>5
q.find(function(num){ return num>10 })//===>undefined
q.findIndex(function(num){ return num>10 })//===>-1

7.数组类的静态方法

静态方法只能通过类去调用

Array.of : 将一数值转化为数组

Array.from : 将类数组转化为数组

// Array.of
Array.of(1)//===>[1]
Array.of(1,2,3,4,4,5)//===>[1, 2, 3, 4, 4, 5]

// Array.from
Array.from('182578154')//===>["1", "8", "2", "5", "7", "8", "1", "5", "4"]
Array.from('你好啊')//===>["你", "好", "啊"]

8.数组填充

fill : 填充数组 影响原数组

//array.fill(value, start, end)
let kk = [1,2,3,4,4,5,5]
kk.fill(9,1,3)//===>[1, 9, 9, 4, 4, 5, 5]
console.log(kk)//===>[1, 9, 9, 4, 4, 5, 5]

---------题外话--------

类数组转数组方法

  1. slice方法Array.prototype.slice.call(str)
  2. 三点表达式[...str]
  3. Array.from方法Array.from(str)

创建数组的方法

  1. let a = []
  2. let a = new Array()
  3. let a = Array(3) // 创建长度为3的数组
  4. let a = Array(1,2,3) // 创建内容为[1,2,3]的数组
  5. let a = Array.of(1,2,3) // 创建内容为[1,2,3]的数组
  6. let a = Array.from(‘1234’) //类数组转数组
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值