字串和陣列常用方法整理

luojian001發表於2019-01-04

字串方法

  1. 獲取字串某位字元

[] === charAt

let str = "abcdefg";
console.log(str[0]);//"a"
console.log(str.charAt(1));//"b"
複製程式碼複製程式碼
  1. 獲取字串長度

str.length

let str = "abcdefg";
console.log(str.length);//7
console.log(str[str.length-1]);//"g"
複製程式碼複製程式碼
  1. 查詢某個字元,有則返回第一次匹配到的位置,否則返回-1

indexOf()

let str = "abcdefg";
console.log(str.indexOf("a"));//0
console.log(str.indexOf("z"));//-1
複製程式碼複製程式碼
  1. 將字元轉換為ascll碼值以及將ascll碼值轉換為字元

charCodeAt()String.fromCharCode()

let str = "abcdefg";
console.log(str.charCodeAt(0));//"a" --> 97
console.log(String.fromCharCode(97));//97 --> "a"
複製程式碼複製程式碼
  1. 字串拼接

concat()

let str = "abc";
console.log(str.concat("efg"));//"abcefg"
console.log(str.concat("efg","hijk"));//"abcefghijk"
複製程式碼複製程式碼
  1. 字串切割
  • slice()
  • substring()
  • substr()
let str = "abcdefg";
/*slice*/
console.log(str.slice(1,6));//"bcdef" [1,6)
console.log(str.slice(1)); //"bcdefg" [1,str.length-1]
console.log(str.slice());//"abcdefg" [0,str.length-1]
console.log(str.slice(-2));//"fg"
console.log(str.slice(6, 1));//""
/*
slice只傳兩個值個值,則表示左閉右開,不包括結束位置的值
傳入一個值,則表示,才起始位開始,把字串切割完
不傳值,則切割整個字串
也可以傳入負數,字串倒數第一位為-1
*/
/*substring*/
console.log(str.substring(1,6));//"bcdef" [1,6)
console.log(str.substring(1)); //"bcdefg" [1,str.length-1]
console.log(str.substring());//"abcdefg" [0,str.length-1]
console.log(str.substring(6,1));//"bcdef" [1,6)
console.log(str.substring(-1));//"abcdefg"
/*
用法和slice基本相同,只不過substring,傳入的第一個值比第二個值大
時,預設會進行從小值切到大值的處理
以及傳入負數,會切割整個字串
*/

/*substr(start,length)*/
console.log(str.substr(1,6));//"bcdefg" 6代表切割的length
console.log(str.substr(1)); //"bcdefg" [1,str.length-1]
console.log(str.substr());//"abcdefg" [0,str.length-1]
console.log(str.substr(-1));//"g"

/*
substr 第一個參數列示開始切割的起始位置
第二個參數列示切割的長度
傳一個值和不傳值的表現和slice相同
也可以傳入負值
*/
複製程式碼複製程式碼
  1. 字串轉換大小寫
  • toUpperCase()
  • toLowerCase()
let str1 = "adABDndj";
console.log(str1.toUpperCase());//"ADABDNDJ"
console.log(str1.toLowerCase());//"adabdndj"
複製程式碼複製程式碼
  1. 切割字串返回陣列

split()此方法和陣列的arr.join()對照著講

注意:字串的所有方法,都不會改變字串本身

陣列方法

  1. 陣列的取值

陣列使用下標取值[idx]

let arr = [1,2,3,4];
console.log(arr[1]);//2
複製程式碼複製程式碼
  1. 陣列的拼接

arr.concat()

let arr = [1,2,3];
console.log(arr.concat([4,5,6],[7,8,9]));//[1, 2, 3, 4, 5, 6, 7, 8, 9]
複製程式碼複製程式碼
  1. 獲取陣列的長度

arr.length

  1. 使用slice進行陣列的切割

用法和字串相同

let arr = [1,2,3,4,5,6,7,8];
console.log(arr.slice(1,6));//[2, 3, 4, 5, 6] [1,6)
console.log(arr.slice(1)); //[2, 3, 4, 5, 6, 7, 8] [1,arr.length-1]
console.log(arr.slice());//[1, 2, 3, 4, 5, 6, 7, 8] [0,arr.length-1]
console.log(arr.slice(-2));//[7, 8]
console.log(arr.slice(6, 1));//[]
複製程式碼複製程式碼
  1. indexOf查詢
let arr = [1,2,3,4,5,6,7,8];
console.log(arr.indexOf(8));//7
console.log(arr.indexOf(10));//-1
複製程式碼複製程式碼
  1. 往陣列裡面新增或刪除資料
  • push往陣列末尾新增資料
  • unshift往陣列開頭新增資料
  • pop刪除陣列末尾的資料
  • shift刪除陣列開頭第一個資料
let arr = [1,3,4,5];
arr.push("a",6);
console.log(arr);//[1,3,4,5,"a",6];
arr.pop();
console.log(arr);//[1,3,4,5,"a"];
arr.unshift(2);
console.log(arr);//[2,1,3,4,5,"a"];
arr.shift();
console.log(arr);//[1,3,4,5,"a"];

複製程式碼複製程式碼
  1. arr.splice()可以實現上述四個方法的所有功能
  • 引數1 指定新增或者刪除開始的索引
  • 引數2 指定刪除的length(必須 該值為0,表示不刪除任何元素)
  • 引數3及之後的引數 表示要新增的資料(可選)
let arr = [1,3,4,5];
arr.splice(0,0,"12");//===arr.unshift("12");
console.log(arr);//["12", 1, 3, 4, 5]
arr.splice(0,1);//=== arr.shift();
console.log(arr);//[1, 3, 4, 5]
arr.splice(arr.length,0,"a");//===arr.push("a");
console.log(arr);//[1, 3, 4, 5, "a"]
arr.splice(arr.length-1,1);//===arr.pop();
console.log(arr);//[1, 3, 4, 5]
複製程式碼複製程式碼
  1. 陣列的排序(一般用於number型別的資料)

arr.sort()

let arr = [97,3,67,42,100,21];
//升序排序
arr.sort((a,b)=>a-b);
console.log(arr);//[3, 21, 42, 67, 97, 100]
//降序排序
arr.sort((a,b)=>b-a);
console.log(arr);//[100, 97, 67, 42, 21, 3]
複製程式碼複製程式碼
  1. 陣列拼接成字串

arr.join()

let arr = [1,23,4,45,5];
let str = arr.join("-");
console.log(str);//"1-23-4-45-5"

//字串切割成陣列
let arr1= str.split("-");//參數列示以什麼字元為界限切割字串
console.log(arr1);//["1", "23", "4", "45", "5"]
複製程式碼複製程式碼
  1. 陣列反序

arr.reverse()

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

複製程式碼複製程式碼

注意:陣列中和字串同名的方法,還有外加一個join()都不改變原陣列


相關文章