陣列與字串方法與相互轉換

漲月薪發表於2019-01-16

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]
複製程式碼

相關文章