JS數(shù)組字符串方法整理

回顧數(shù)組字符串方法

數(shù)組對象方法

轉(zhuǎn)換數(shù)組(將數(shù)組轉(zhuǎn)換成一些其他形式):

  1. valueOf() 返回數(shù)組對象本身,和直接輸出數(shù)組對象是一樣的

  2. toString() 把數(shù)組以逗號相連轉(zhuǎn)為字符串

var arr = [1, 2, 3, 4, 5];
console.log(arr.toString());
  1. join() 用指定分隔符連接數(shù)組元素轉(zhuǎn)為字符串
var arr = [1, 2, 3, 4, 5];
console.log(arr.join());
console.log(arr.join("-"));
console.log(arr.join(""));

注: 不傳入?yún)?shù)即表示默認(rèn)用逗號連接轉(zhuǎn)為字符串

數(shù)組檢測: 用于判斷是否是數(shù)組類型

  1. instanceof 關(guān)鍵字 注意它不是方法沒有(),并且也適用于其他判斷
var arr = [1,2,3,4,5];
console.log(arr instanceof Array); //true
console.log("a" instanceof Array); //false
  1. Array.isArray()
var arr = [1,2,3,4,5];
console.log(Array.isArray(arr));//true
console.log(Array.isArray("a"));//false

增刪方法:

  1. push() 從后面添加元素,返回新數(shù)組的長度
var arr = [11,22,33,44,55];
console.log(arr.push(99));
  1. pop() 從后面刪除元素,返回被刪除的元素
var arr = [11,22,33,44,55];
console.log(arr.pop());
  1. shift() 從前面刪除元素,返回被刪除的元素
var arr = [11,22,33,44,55];
console.log(arr.shift());
  1. unshift() 從前面添加元素,返回新數(shù)組的長度
var arr = [11,22,33,44,55];
console.log(arr.unshift(0));

迭代方法:

  1. filter 需要傳入一個回調(diào)函數(shù),該回調(diào)函數(shù)需具有三個參數(shù),這個回調(diào)函數(shù)由js內(nèi)部調(diào)用,filter方法會遍歷數(shù)組,每次遍歷到一個元素就會執(zhí)行回調(diào)函數(shù)一次,第一個參數(shù)為當(dāng)前元素,第二個參數(shù)為當(dāng)前元素的索引,第三個參數(shù)為當(dāng)前數(shù)組
var arr = [1500, 1200, 2000, 2100, 1800];
var newArr = arr.filter(function (element, index, array) {
 if (element > 2000) {
  return false;
 }
 return true;
});
console.log(newArr);
// 回調(diào)函數(shù)返回值為true則表示當(dāng)前需要保留當(dāng)前元素,返回false則表示不保留當(dāng)前元素,如果沒寫返回值默認(rèn)為undefined也就是false 
// 當(dāng)數(shù)組迭代完成時,會返回一個新數(shù)組,這個新數(shù)組中的元素取決于在回調(diào)函數(shù)中,有多少個元素返回了true得以保留
  1. forEach方式進行迭代(ES5的新方法)
    和filter()方法一樣傳入一個回調(diào)函數(shù),有JS內(nèi)部調(diào)用進行數(shù)組遍歷,循環(huán)遍歷數(shù)組時,每循環(huán)到一個元素就會調(diào)用一次,回調(diào)函數(shù)同樣有3個參數(shù),參數(shù)1: 遍歷到的元素,參數(shù)2: 便利到的元素索引,參數(shù)3: 原數(shù)組
var arr = [4, 6, 7, 8, 3, 46, 8];
arr.forEach(function(e){
    console.log(e);
}

var arr = [4, 6, 7, 8, 3, 46, 8];
arr.forEach(function(element, index, arr){
    console.log(element);
    console.log(index);
    console.log(arr);
});

位置方法:

  1. indexOf() 返回找到數(shù)組中第一個a出現(xiàn)的位置
var arr = ["c", "a", "z", "a", "x", "a"];
console.log(arr.indexOf("a"));//1
// 注:搜索""結(jié)果是0,搜不到的結(jié)果是-1,搜索"ca"結(jié)果也是0
  1. lastIndexOf() 返回從后往前找到數(shù)組中第一個a出現(xiàn)的位置
var arr = ["c", "a", "z", "a", "x", "a"];
console.log(arr.lastIndexOf("a"));//5
// indexOf的第二個參數(shù):從哪個索引開始找,包含該索引
// 找不到返回-1!
  1. 實例:尋找每個a出現(xiàn)的位置
var arr = ["c", "a", "z", "a", "x", "a"];
var index = -1;
do {
    index = arr.indexOf("a", index+1);
    console.log(index);
} while (index !== -1);
  1. 實例:統(tǒng)計元素的出現(xiàn)次數(shù)
    要統(tǒng)計每個元素出現(xiàn)的次數(shù),可以使用鍵值對(對象)的形式來存儲數(shù)據(jù),元素作為鍵(對象的屬性),出現(xiàn)的次數(shù)作為值,元素每出現(xiàn)一次,就讓鍵對應(yīng)的值自增一即可
var arr = ["c", "a", "z", "a", "x", "a"];
var count = {};
for (var i = 0; i < arr.length; i++) {
    var item = arr[i];
    if (count[item]) { //循環(huán)過程中判斷,如果這個元素在對象中有鍵,那取出值進行自增
        count[item]++;
    } else { //如果這個元素在對象中沒有鍵,那就加一個鍵進去,初始值為1,表示出現(xiàn)了一次
        count[item] = 1;
    }
}
console.log(count);

其他方法:

  1. slice截取數(shù)組,不會改變原數(shù)組,返回一個新數(shù)組
var arr = [4, 6, 7, 8, 3, 46, 8];
console.log(arr.slice(0, 2));//結(jié)果是[4, 6]
// 注:開始能取到,結(jié)束取不到 !
  1. splice刪除數(shù)組中的元素,會對原數(shù)組進行修改,返回刪掉的數(shù)組
var arr = [4, 6, 7, 8, 3, 46, 8];
console.log(arr.splice(0, 2));
// 從一個索引開始,刪除多少個元素
// 第三個參數(shù)可以往刪除的地方添加元素,可以添加多個,使用逗號隔開即可
  1. 清空數(shù)組:
var array = [1,2,3,4,5,6];
//方式1
array.splice(0,array.length); //刪除數(shù)組中所有項目 
//方式2
array.length = 0; //length屬性可以賦值
//方式3
array = [];  //推薦

字符串對象方法

截取方法

  1. slice() 從start位置開始妻怎,截取到end位置,end取不到
  2. substring() 從start位置開始,截取到end位置烹植,end取不到
  3. substr() 從start位置開始,截取length個字符

位置方法 indexOf()

替換方法 replace()

字符方法 charAt()

其他方法

  1. split()
  2. trim()
  3. charCodeAt() //獲取指定位置處字符的ASCII碼
  4. str[0] //ES5库倘,IE8+支持 和charAt()等效

歸納整理數(shù)組字符串常用方法

字符串方法

var a="i love you!";
  1. toUpperCase() 將小寫轉(zhuǎn)換成大寫

  2. toLowerCase() 將大寫轉(zhuǎn)換成小寫

  3. charAt() 返回指定位置的字符

document.write(a.charAt(4));//結(jié)果是v
// 注:字符是從0開始到length-1結(jié)束
  1. indexOf() 返回指定字符的位置
document.write(a.charAt(v));//結(jié)果是4
  1. lastIndexOf()

  2. split() 返回被分割的字符串?dāng)?shù)組

document.write(a,split("v",2));//結(jié)果是["i lo","e you!"]
// 注:前面指定分割的位置,不填則分割成一個個字符;后面指定分割組數(shù),可不填
  1. substring() 提取字符串
document.write(a.substring(2,5));//結(jié)果是love
document.write(a.substring(7));//結(jié)果是you!
// 注:前面指定開始提取的位置;后面指定結(jié)束提取的位置,不填則默認(rèn)到字符串最后
  1. subsrt() 提取指定數(shù)目字符串
document.write(a.substr(2,4));//結(jié)果是love
document.write(a.substr(-4));//結(jié)果是you!
// 注:前面指定開始提取的位置;后面指定提取的長度,不填則默認(rèn)到字符串最后;若出現(xiàn)-,則表示倒著數(shù)

數(shù)組方法

  1. concat() 連接數(shù)組,不改變原數(shù)組,返回一個新數(shù)組
var a=["1","2"];
var b=["3","4"];
document.write(a.concat(b));
//結(jié)果是["1","2","3","4"]
  1. join() 用指定分隔符連接數(shù)組元素,返回string
var a=["I","love","you"];
document.write(a.join("."));//結(jié)果是I.love.you
// 注:若不指定,默認(rèn)","
  1. reverse() 顛倒數(shù)組元素順序,會改變原數(shù)組
var a=["1","2"];
document.write(a.reverse());//結(jié)果是["2","1"]
  1. slice() 選定元素,不改變原數(shù)組,返回一個子數(shù)組
var a=["1","2","3","4"];
document.write(a.slice(2,4));//結(jié)果是["3","4"];
// 注:前面指定開始選定的位置,注意不包括這個位置;后面指定結(jié)束選定的位置,不填則默認(rèn)到字符串最后;若出現(xiàn)-,則表示倒著數(shù)
  1. sort() 數(shù)組排序
function a(x,y){return x-y;}
//升序,若降序,return y-x;
var b=["1","7","5","3"];
document.write(b.sort(a));
//結(jié)果是["1","3","5","7"]
  1. slice(start,end) 截取指定索引之間的字符串(包括start,不包括end),返回新的字符串
var str = "abcdaefga";
console.log(str.slice(1,5)); // "cda"
  1. subString(start,stop) 截取指定索引之間的字符串(包括start,不包括stop),返回新的字符串
var str = "abcdaefga";
console.log(str.slice(1,5)); // "cda"
  1. charAt(index) 返回指定位置的字符
var str = "abcde";
console.log(str.charAt(3)); // d
  1. concat(str) 連接字符串,生成一個新的字符串,原字符串不會被改變
var str1 = "abc";
var str2 = "def";
console.log(str1.concat(str2)); // “abcdef”
  1. trim()去掉字符串的首尾的空格,返回新的字符串
var str = "  abcd  ";
console.log(str.trim()); // "abcd"
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末巴元,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子陋率,更是在濱河造成了極大的恐慌球化,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓦糟,死亡現(xiàn)場離奇詭異筒愚,居然都是意外死亡,警方通過查閱死者的電腦和手機菩浙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門巢掺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人劲蜻,你說我怎么就攤上這事陆淀。” “怎么了先嬉?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵轧苫,是天一觀的道長。 經(jīng)常有香客問我疫蔓,道長含懊,這世上最難降的妖魔是什么身冬? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮岔乔,結(jié)果婚禮上酥筝,老公的妹妹穿的比我還像新娘。我一直安慰自己雏门,他們只是感情好嘿歌,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茁影,像睡著了一般搅幅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呼胚,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天茄唐,我揣著相機與錄音,去河邊找鬼蝇更。 笑死沪编,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的年扩。 我是一名探鬼主播蚁廓,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼厨幻!你這毒婦竟也來了相嵌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤况脆,失蹤者是張志新(化名)和其女友劉穎饭宾,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體格了,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡看铆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了盛末。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弹惦。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖悄但,靈堂內(nèi)的尸體忽然破棺而出棠隐,到底是詐尸還是另有隱情,我是刑警寧澤檐嚣,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布助泽,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏报咳。R本人自食惡果不足惜侠讯,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一挖藏、第九天 我趴在偏房一處隱蔽的房頂上張望暑刃。 院中可真熱鬧,春花似錦膜眠、人聲如沸岩臣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽架谎。三九已至,卻和暖如春辟躏,著一層夾襖步出監(jiān)牢的瞬間谷扣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工捎琐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留会涎,地道東北人。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓瑞凑,卻偏偏與公主長得像末秃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子籽御,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容