数组与字符串方法与相互转换

1. 数组转换字符串 join('') 或toString() [1,2,3,4] => '1234'

注意:

  • 返回字符串,不改变原有数组
  • toString()参数可无限嵌套数组
let a = [1,2,3];  
a.join(); //'1,2,3' 不传参数会添加逗号
a.join(''); //'123'

a.toString(); //'1,2,3'
['a','b','c'].toString(); //'a,b,c'
[1,[2,'c']].toString(); //'1,2,c'
复制代码

2. 字符串转换为数组 split('') '1234' => ['1','2','3','4']

let a = '123';
a.split(); //['123'] 不传参数会作为一个值
a.split(''); //['1','2','3']
复制代码

3.数组反转 reverse() [1,2,3,4] => [4,3,2,1]

注意:原有数组被修改

let a = [1,2,3,4];
a.reverse(); //[4,3,2,1]
复制代码

4. 数组排序 sort()

注意:

  • 原有数组被修改
  • 无参数元素按照转换为的字符串的各个字符的Unicode位点进行排序
  • 当sort参数为函数时
    • return 小于0:第一个参数在前,第二个参数在后
    • return 等于0:位置不变
    • return 大于0:第一个参数在后,第二个参数在前
  • undefined元素排在数组的最后
let a = [33,4,1111,222];
let b = ['b', 'c', 'a'];
b.sort(); //['a','b','c']
a.sort(); //[1111,222,33,4]
a.sort((a,b) = > {
    return a-b;//[4,33,222,1111] a比b大 返回值大于0 a放在后面 值越大越靠后
})
a.sort((a,b) => {
    return b-a;//[1111,222,33,4] b比a大 返回值大于0 a放在后面 值越小越靠后
})
复制代码

5. 拼接数组 concat()

注意:

  • 原有数组不被修改,会返回一个新的数组
  • concat可以添加过个参数,若参数中有数组,会自动拼接数组中的元素
  • 若参数是数组,数组中又嵌套数组,concat不会扁平化递归,会拼接数组中的数组元素
let a = [1,2,3];
a.concat(4,5); // [1,2,3,4,5]
a.concat([4,5]) // [1,2,3,4,5]
a.concat([4,5], [6,7]) // [1,2,3,4,5,6,7]
a.concat(4,[5,[6,7]]) //[1,2,3,4,5,[6,7]]
复制代码

6.获取数组的子数组 slice()

注意:

  • 原有数组不改变,返回子数组
  • slice(startIndex,endIndex) 从startIndex到endIndex-1位置的子数组
  • slice(startIndex,0) 从startIndex到数组结尾
  • slice(startIndex,-2) 从startIndex到数组结尾到倒数第二个位置,-1指定最后一个元素
let a = [1,2,3,4,5];
a.slice(0,3); // [1,2,3]
a.slice(3); // [4,5]
a.slice(1,-1) // [2,3,4]
a.slice(-3,-2) // [3]
复制代码

7. 在数组中删除或插入元素 splice()

注意:

  • 原有数组被修改,返回被删除的元素
  • splice(index, num, item1, item2,...)
    • index:插入或删除的起始位置(包含);
    • num:插入或删除的元素个数,num省略则index后所有元素均被删除
    • item1,item2,...:需要插入的元素,新元素从index开始
let a = [1,2,3,4,5,6,7,8];
a.splice(4); // 从index=4删除到结尾,返回[5,6,7,8] a=>[1,2,3,4]
//此时a = [1,2,3,4]
a.splice(1,2); // 从index=1删除2个元素 返回[2,3] a=> [1,4]
//此时 a = [1,4]
a.splice(1,1) // 从index=1删除1个元素 返回[4] a=>[1]

let b = [1,2,3,4,5];
b.splice(2,0,'a','b'); // 从index=2删除0个元素并插入新元素,返回[] b=>[1,2,'a','b',3,4,5]
// 此时b = [1,2,'a','b',3,4,5]
b.splice(2,2,[1,2],3) //从index=2开始删除2个元素,插入[1,2],3 返回['a', 'b'] b=>[1,2,[1,2],3,3,4,5]
复制代码

8. 数组尾部添加或删除元素 push() pop()

注意:

  • 原有数组会被修改
  • push返回新数组的长度,pop返回删除的值
  • 入参是数组类型,不会解析,当做一个元素
let stack = [];
stack.push(1,2); //返回新数组长度2 stack=>[1,2]
stack.pop(); //返回被删除的元素值2 stack=>[1]
stack.push(3); //返回新数组长度2 stack=>[1,3]
stack.pop(); //返回被删除的元素3 stack=>[1]
stack.push([4,5]); //返回新数组长度2 stack=>[1,[4,5]]
stack.pop(); //返回被删除的元素[4,5] stack=>[1]
复制代码

9. 数组头部添加或删除元素 unshift() shift()

注意:

  • 原有数组会被修改
  • unshift()添加一个或多个元素,返回新数组长度
  • shift()删除第一个元素,返回删除的元素
    • 入参是数组类型,不会解析,当做一个元素
let a = [];
a.unshift(1); //返回新数组长度1 a=>[1]
a.unshift(22); //返回新数组长度2 a=>[22,1]
a.shift(); //返回删除的元素22 a=> [1]
a.unshift(3,[4,5]); //返回新数组长度3 a=>[3,[4,5],1]
a.shift(); //返回删除的元素3 a=>[[4,5],1]
a.shift(); //返回删除的元素[4,5] a=>[1]
复制代码

转载于:https://juejin.im/post/5c3edef9f265da6164143fac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值