JavaScript Array與String簡(jiǎn)單使用

JS對(duì)象:數(shù)組

對(duì)比Object-C中的數(shù)組,JavaScript數(shù)組有一些不一樣的特點(diǎn)
JavaScript數(shù)組:無(wú)類型 動(dòng)態(tài) 稀疏
無(wú)類型:指的是數(shù)組元素沒(méi)有類型限制 可以是任意類型 string number boolean array object 這些類型都可以成為數(shù)組元素
動(dòng)態(tài):指的是數(shù)組的長(zhǎng)度 會(huì)動(dòng)態(tài)改變 不分可變數(shù)組與不可變數(shù)組
稀疏:指的是數(shù)組中兩個(gè)元素下標(biāo)可能不是連續(xù)的 無(wú)越界錯(cuò)誤
例['1',,'2'] 1與2之間存在一個(gè)undefined 這樣不會(huì)報(bào)錯(cuò) 下標(biāo)1取到的值就是undefined

創(chuàng)建
let array = [1,2];//數(shù)組array存在兩個(gè)元素 1 2  
let array = new Array();// 無(wú)參數(shù) 空數(shù)組
let array = new Array(3); // 長(zhǎng)度為3的數(shù)組
let array = new Array(5,"message");// 元素有5 ‘message’的數(shù)組
let array = Array.of(7);//創(chuàng)建有一個(gè)元素7的數(shù)組 [7]
數(shù)組的簡(jiǎn)單操作
#1.取值與賦值 長(zhǎng)度
let value = array[0]; //獲取下標(biāo)為0的元素值
array[0] = 'newValue';//賦予新值
array.length  //長(zhǎng)度 OC中獲取長(zhǎng)度count

//用message 替換數(shù)組中從0下標(biāo)(包含)開始 到9下標(biāo)(不包含)結(jié)束的所有元素 
例:['1','2','3'].fill('message',0,2)  ['message','message',3]
array.fill('message',0,9);

#2.添加元素 
 array.push('newValue');//在數(shù)組末尾添加一個(gè)元素
array.unshift("firstValue");//在數(shù)組開頭添加一個(gè)元素
array.splice(2,0,"insertValue");//在數(shù)組下標(biāo)為2的位置插入一個(gè)元素
array.splice(2,0,"insertValue","insertValue")//在數(shù)組下標(biāo)為2的位置連續(xù)插入兩個(gè)元素
注意點(diǎn):插入元素參數(shù)說(shuō)明  第一個(gè)參數(shù)2 指定下標(biāo)  第二個(gè)參數(shù)0 指定從下標(biāo)2開始要?jiǎng)h除幾個(gè)元素  后面接著的多個(gè)元素則是要插入的元素  
*如果同時(shí)存在需要?jiǎng)h除與插入的情況 先執(zhí)行刪除操作 后執(zhí)行插入操作  先刪后插*

#3.刪除元素
array.shift();//刪除數(shù)組第一個(gè)元素
array.pop();//刪除數(shù)組最后一個(gè)元素
array.splice(2,1);//刪除數(shù)組下標(biāo)2的元素
array.splice(2,3);//刪除數(shù)組下標(biāo)2 3 4的三個(gè)元素
array.splice(0,array.length);//刪除全部元素
delete array[0];//這個(gè)方法刪除的是 下標(biāo)為0的元素的值 但是實(shí)體還是存在于數(shù)組中 數(shù)組長(zhǎng)度不變

#4.合并多個(gè)數(shù)組
let array1 = ["1",'2'];
let array2 = ['3','4'];
let newArray = array1.concat(array2);
//此方法不會(huì)更改現(xiàn)有數(shù)組,而是返回一個(gè)新數(shù)組。

#5.將各元素拼接成字符串
let array = ['1','2'];
let str = array.join('&');//& 指的是拼接的字符串 數(shù)組中各元素之間分隔符  1&2
let str = array.toString();//分隔符固定,

#6.判斷是否包含指定元素
let array = ['function','happy','sad','sad'];
//直接判斷 包含返回true  不包含返回false
array.includes('happy');
//返回元素為'sad'的索引 參數(shù)1指的是從數(shù)組下標(biāo)為1的元素開始向后排查  如果沒(méi)有則返回-1 有則返回第一個(gè)滿足條件的元素下標(biāo)  這里是2
let sadIndex = array.indexOf('sad',1);
//返回?cái)?shù)組中最后一個(gè)'sad'的下標(biāo) 如果沒(méi)有則返回-1  這里是3
let lastIndex = array.lastIndexOf('sad');
//讓數(shù)組的每一個(gè)元素執(zhí)行一次函數(shù)  返回?cái)?shù)組中第一個(gè)滿足條件的元素  參數(shù)value是數(shù)組中的元素 如果沒(méi)有滿足的  返回undefined
let value = array.find(value => {  
      return value == 'function';
 });
//讓數(shù)組的每一個(gè)元素執(zhí)行一次函數(shù)  返回?cái)?shù)組第一個(gè)中滿足條件的元素下標(biāo)  參數(shù)value是數(shù)組中的元素 如果沒(méi)有滿足的 返回-1
let index = array.findIndex(value => {
     return value == 'happy';
 });
//讓數(shù)組中每一個(gè)元素都執(zhí)行一次函數(shù) 只要有任意一個(gè)元素滿足函數(shù)的判斷就返回true
array.some(value=>value=='message');//判斷數(shù)組中是否存在'message' 存在返回true 反之返回false

//自定義方法 遍歷進(jìn)行判斷

#7.排序
array.reverse();  //將數(shù)組元素進(jìn)行反轉(zhuǎn) 例:[1,2,3]  [3,2,1]
array.sort();//字符串?dāng)?shù)組 進(jìn)行排序 升序
//采用函數(shù)判斷 根據(jù)函數(shù)中的條件進(jìn)行排序
array.sort((a,b) => {
        //return a.length - b.length;//大的向后
        return b.length - a.length;//小的向后
});
        
#8.從原數(shù)組中截取一部分 形成新的數(shù)組
let array = ['begin','find','end'];
let newArray = array.slice(1,3);//參數(shù)一 從什么下標(biāo)開始(包含本下標(biāo)元素)  參數(shù)二 到什么下標(biāo)結(jié)束(不包含本下標(biāo)元素)
let newArray = array.filter(value => value > 8);//獲取數(shù)組中所有大于8的元素 形成一個(gè)新數(shù)組

#9.數(shù)組中每一個(gè)元素都執(zhí)行一遍函數(shù)
//讓數(shù)組中所有元素都加上了一個(gè)字符串new
 array.forEach(value => array[array.indexof(value)] = value+'new');
//讓數(shù)組中每個(gè)元素都加new 并返回形成一個(gè)新的數(shù)組
array.map(value => value + 'new');

#10.遞歸
let array = [1,2,3,3,4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;
let newStr = array.reduce(reducer,'message');//值為message12334  'message'做為函數(shù)reducer的初始值  每次循環(huán)都會(huì)加上數(shù)組的下一個(gè)元素
let newStr = array.reduceRight(reducer,'message');//值為message43321  反向
let newStr = array.reduce(reducer);//值為13  正向1+2+3+3+4   

#11.判讀數(shù)組中所有元素是否都滿足函數(shù)判斷
array.every(value=>value==17);//如果全都滿足返回true  不是全部都滿足返回false

#12.數(shù)組內(nèi)元素淺拷貝至數(shù)組內(nèi)指定位置
let array = [1,2,3,4,5,6,7];
array.copyWithin(1,4,5);//完整形態(tài)
//1 指淺拷貝的元素要復(fù)制到什么位置上 這里從下標(biāo)為1(包含) 的地方
開始
//4 指從什么地方開始復(fù)制元素 這里從下標(biāo)4(包含)開始  默認(rèn)是從0下標(biāo)開始復(fù)制
//5 指復(fù)制到什么地方結(jié)束 這里復(fù)制到下標(biāo)5(不包含)結(jié)束  默認(rèn)是array.length
array.copyWithin(3);//簡(jiǎn)寫 等價(jià)于array.copyWithin(3,0,array.length);

JS對(duì)象:字符串

字符串對(duì)象用于處理已有的字符塊。
字符串用來(lái)儲(chǔ)存一系列字符。
一般都直接用字符串就行了。

創(chuàng)建
let string = 'message';//變量 類型string
let string = String('message');//變量 類型string
let string = new String('message');//對(duì)象 類型object 一般情況不用這種方式 具體為什么 前輩提醒會(huì)拖慢執(zhí)行效率
//以上三種創(chuàng)建方式 在函數(shù)的調(diào)用上 沒(méi)有什么區(qū)別  都可以調(diào)用
字符串的簡(jiǎn)單操作
#1 長(zhǎng)度獲取  單個(gè)字符獲取
string.length;

#2 字符獲取
string[0];//獲取字符串中第一個(gè)字符  (參數(shù):字符位置)
string.charAt(0);//獲取字符串中第一個(gè)字符  (參數(shù):字符位置)
string.match(/s/g);//通過(guò)正則表達(dá)式匹配 找到一個(gè)或多個(gè)字符串


#3 Unicode編碼與字符轉(zhuǎn)換
string.charCodeAt(1);//返回字符串中位置1的字符的Unicode編碼
String.fromCharCode(101);//返回Unicode編碼為101 的字符

#4 字符串拼接
let str1 = 'mess';
let str2 = 'age';
let newStr = str1.concat(str2);//'message'
let newStr = str1 + str2;//'message'
//兩種方式都可以得到同一個(gè)結(jié)果 都是在堆開辟空間 存放新數(shù)據(jù)
//后經(jīng)過(guò)了解 兩者性能相差不大 
//web開發(fā)人員使用:concat大多用于數(shù)組操作  字符串的拼接基本都是用的“+”

#5 獲取指定字符串在原字符串中位置
let index = string.indexOf('ge');//獲取第一個(gè)'ge'字符串 在原字符串中的開始位置
let lastIndex = string.lastIndexOf('e');//返回最后一個(gè)字符串'e' 在原字符串中的位置
let seachIndex = string.search(/s/g);//返回正則表達(dá)式匹配的字符串的位置

#6 字符串替換
string.replace('messa','MESSA');//將指定字符串替換成新字符串(參數(shù)一 需要替換的字符串  參數(shù)二 替換的字符串)

#7 字符串截取
let newStr =  string.slice(1,4);//截取從位置1(包含) 開始 到 位置4(不包含) 的字符串 返回一個(gè)新字符串
let newStr = string.substr(0,2);//獲取從位置0(包含)開始 長(zhǎng)度為2 的字符串
let newString = string.substring(0,2);//獲取從位置0(包含)開始 到位置2(不包含)的字符串
//注意點(diǎn) 兩個(gè)參數(shù)都是必須的  如果只指定一個(gè)參數(shù)  則是代表從指定位置(不包含)開始 截取到字符串最后

#8 字符串分割
let string = 'message8message';
var strS = string.split('8');//將字符串以分隔符8 為標(biāo)準(zhǔn)進(jìn)行分割 返回字符串?dāng)?shù)組

#9 字符串大小寫
string.toUpperCase();//全部大寫
string.toLowerCase();//全部小寫

#10 判斷是否是指定字符串結(jié)尾
let string = 'message message';
var result = string.endsWith('ess',2);//是true 否false (參數(shù)一:指定結(jié)尾字符串 參數(shù)二:判斷長(zhǎng)度 從0開始 無(wú)指定則默認(rèn)length)
//例子中 判斷字符串從0開始 長(zhǎng)度為2 的字符串中是否以'e'結(jié)尾
//理解:將字符串從0開始 長(zhǎng)度2 截取出來(lái)'me'  然后判斷'me'是否以'ess'結(jié)尾 例子中返回false
//一般用法:string.endsWith('ess');//判斷字符串是否以'e'結(jié)尾

#11 判斷字符串中是否存在指定字符串
 var result = string.includes('ess',0);//ture false (參數(shù)0 指定從什么位置開始搜索到最后)

#12 空格剔除
string.trim();//剔除前后空格
string.trimLeft();//剔除前端空格
string.trimRight();//剔除后端空格

#13 支持正則表達(dá)式的字符串函數(shù)操作
search  match  replace  split
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容