數(shù)組及其ES5特性型雳,字符串小結(jié)

數(shù)組

基本使用和一些常用方法

var arr = [1,2,3,4.5,6,7,8] //數(shù)組成員用逗號(hào)隔開(kāi)纠俭。注意冤荆!不要以逗號(hào)結(jié)尾!在不同瀏覽器環(huán)境下容易造成未知錯(cuò)誤乌妒!
var arr = [0]               //將數(shù)組設(shè)置為0外邓,則可以清空數(shù)組
var arr = [3, 4, 5, 6]   //定義數(shù)組并賦值
console.log(arr.length)  //4撤蚊;獲取數(shù)組的長(zhǎng)度
console.log(arr[0])      //3;獲取數(shù)組的第一個(gè)成員损话,數(shù)組計(jì)數(shù)從0開(kāi)始侦啸,[0]即是第一位
console.log(arr[3])      //6;獲取數(shù)組的第4個(gè)成員
console.log(arr[4])      //undefined丧枪;未定義數(shù)組的第五個(gè)成員光涂,輸出undefined
arr[4] = 'hello' //將'hello'給數(shù)組第五個(gè)成員賦值
console.log(arr[4])      // 輸出數(shù)組第五位成員'hello' 

arr.push('jirengu')      //在數(shù)組最后添加一個(gè)元素'jirengu'
console.log(arr)         // [3, 4, 5, 6, 'hello', 'jirengu'] 輸出數(shù)組
var value = arr.pop()    //把數(shù)組最后一位彈出來(lái),返回拧烦,賦值給value
console.log(value)       //'jirengu'
console.log(arr)         //[3, 4, 5, 6, 'hello']忘闻,已經(jīng)通過(guò)pop操作恋博,彈出了數(shù)組最后一個(gè)成員'jirengu'

arr.unshift('aoao')      //在數(shù)組第一位新增
console.log(arr)         //['aoao', 3, 4, 5, 6, 'hello']
var value2 = arr.shift() //把數(shù)組第一位拿出來(lái)返回齐佳,數(shù)組發(fā)生變化
console.log(value2)      // 'aoao'
console.log(arr)         //[3, 4, 5, 6, 'hello']

var arr2 = arr.splice(1, 2)         //從下標(biāo)為1的元素開(kāi)始,拿出來(lái)2個(gè)元素作為一個(gè)數(shù)組返回债沮,原數(shù)組發(fā)生改變
console.log(arr)         // [3, 6, 'hello']
console.log(arr2)        //  [4, 5]

arr.splice(1, 0, 8,9)    //從下標(biāo)為1的位置開(kāi)始炼吴,刪除0個(gè),新增兩個(gè)元素(在下標(biāo)為1的位置前面新增8,9)
console.log(arr)         //[3, 8, 9, 6, 'hello']

var arr3 = arr.slice(2,3)           //從 arr 下標(biāo)為2開(kāi)始秦士,到下標(biāo)為3結(jié)束(不包括3),做為新數(shù)組永高,不對(duì)原數(shù)組進(jìn)行操作隧土,原數(shù)組不變
console.log(arr3)       // [9]
console.log(arr)        //[3, 8, 9, 6, 'hello']

var str = arr.join('-') //將數(shù)組成員用-連接起來(lái)提针。’-‘可以是其他符號(hào)
console.log(str)        // "3-8-9-6-hello"

var arr4 = [3, 5, -1, 18, 9, 27]
arr4.reverse()          //倒序曹傀,本身發(fā)生變化
arr4.sort(function(v1, v2){   //排序辐脖,本身發(fā)生變化
    return v1-v2; //v2-v1
})

排序 sort

sort方法用于對(duì)數(shù)組進(jìn)行排序,當(dāng)沒(méi)有參數(shù)的時(shí)候會(huì)按字母表升序排序皆愉,如果含有undefined,undefined會(huì)被排到最后面嗜价,對(duì)象元素則會(huì)調(diào)用其toString方法.
sort會(huì)改變?cè)瓟?shù)組

var a=[5,4,3,2,1];
a.sort();
console.log(a);//[1, 2, 3, 4, 5]
var a = [7,8,9,10,11];

對(duì)于這個(gè)數(shù)組,直接使用a.sort方法會(huì)得出[10, 11, 7, 8, 9]的結(jié)果幕庐,因?yàn)槟J(rèn)情況下是比較數(shù)組成員的ASCII碼進(jìn)行排序久锥,此時(shí)需要傳入自定義排序函數(shù)

a.sort(function(v1,v2){
    return v1-v2;
});//該函數(shù)的作用是比較v1,v2數(shù)值的大小,若v1-v2大于零异剥,則兩個(gè)數(shù)組元素需要調(diào)換位置瑟由。
console.log(a);//[7, 8, 9, 10, 11]

ES5數(shù)組

Array.isArray(obj)

這個(gè)函數(shù)是一個(gè)靜態(tài)函數(shù),用來(lái)判斷一個(gè)對(duì)象是不是數(shù)組

var a = [1,2,3,4,5];
var b = new Date();
console.log(Array.isArray(a)); //true
console.log(Array.isArray(b)); //false

.indexOf(element) / .lastIndexOf(element)查找指定元素

這兩個(gè)方法用于查找數(shù)組內(nèi)指定元素位置冤寿,查找到第一個(gè)指定元素后返回其索引歹苦,沒(méi)有查找到返回-1,indexOf從頭至尾搜索督怜,lastIndexOf反向搜索殴瘦。

var a = [1,2,3,4,3,2,1];
console.log(a.indexOf(2)); //1
console.log(a.lastIndexOf(2)); //5
console.log(a.lastIndexOf(0)); //-1;沒(méi)有查找到,返回-1

.forEach(element, index, array)
遍歷數(shù)組參數(shù)為一個(gè)回調(diào)函數(shù)号杠,回調(diào)函數(shù)有三個(gè)參數(shù):

當(dāng)前元素蚪腋,當(dāng)前元素索引值,整個(gè)數(shù)組
這個(gè)函數(shù)的遍歷功能可以在大多數(shù)需要遍歷讀取數(shù)組的情況下使用究流,靈活運(yùn)用可以有效減少代碼量和工作量

var a = new Array(1,2,3,4,5,6);

a.forEach(function(e,i,array){
    array[i]= e * e;
});//遍歷數(shù)組中的每一個(gè)元素辣吃,對(duì)其進(jìn)行求平方操作。
console.log(a);//[1, 4, 9, 16, 25, 36]

var b = ['a','b','c',1,2,3];
b.forEach(function(e,i,array){
    array[i]='' + array[i] + array[i];//單引號(hào)寫(xiě)在前面芬探,可以使運(yùn)算變成字符串拼接
});//b = [" aa", " bb", " cc", " 11", " 22", " 33"]

.every(function(element, index, array)) / .some(function(element, index, array))

這兩個(gè)函數(shù)對(duì)數(shù)組進(jìn)行邏輯判定神得,回調(diào)函數(shù)返回一個(gè)布爾值

every是所有函數(shù)的每個(gè)回調(diào)函數(shù)都返回true的時(shí)候才會(huì)返回true,當(dāng)遇到false的時(shí)候終止執(zhí)行偷仿,返回false

some函數(shù)是“存在”有一個(gè)回調(diào)函數(shù)返回true的時(shí)候終止執(zhí)行并返回true哩簿,否則返回false

var a=new Array(1,2,3,4,5,6);

console.log(a.every(function(e, i, arr){
return e < 6;
}));//返回false

console.log(a.some(function(e,i,arr){
  return e > 4;
})); //返回true

.map(function(element))

與forEach類(lèi)似,遍歷數(shù)組酝静,回調(diào)函數(shù)返回值組成一個(gè)新數(shù)組返回节榜,新數(shù)組索引結(jié)構(gòu)和原數(shù)組一致,原數(shù)組不變

var a = new Array(1,2,3,4,5,6);

console.log(a.map(function(e){
  return e * e;
}));  // [1, 4, 9, 16, 25, 36]

console.log(a); //[1, 2, 3, 4, 5, 6] 對(duì)原數(shù)組不產(chǎn)生影響

.filter(function(element))

返回?cái)?shù)組的一個(gè)子集别智,回調(diào)函數(shù)用于邏輯判斷是否返回宗苍,返回true則把當(dāng)前元素加入到返回?cái)?shù)組中,false則不加

新數(shù)組只包含返回true的值,索引缺失的不包括讳窟,原數(shù)組保持不變

var a = new Array(1,2,3,4,5,6);

console.log(a.filter(function(e){
  return e % 2 == 0;
})); // [2, 4, 6]
var b = a.filter(function(e){
  return e % 2 == 0;
}); // [2, 4, 6]
console.log(a); //[1, 2, 3, 4, 5, 6]
console.log(b); //[2,4,6]

.reduce(function(v1, v2), value) / .reduceRight(function(v1, v2), value)

遍歷數(shù)組让歼,調(diào)用回調(diào)函數(shù),將所有數(shù)組元素組合成一個(gè)值丽啡,合成方法視情況而定
reduce從索引最小值開(kāi)始谋右,reduceRight反向,方法有兩個(gè)參數(shù)
回調(diào)函數(shù):把兩個(gè)值合為一個(gè)补箍,返回結(jié)果
value改执,一個(gè)初始值,可選

var a = new Array(1,2,3,4,5,6);

console.log(a.reduce(function(v1, v2){
    return v1 * v2;
})); // 720;將所有元素相乘

console.log(a.reduceRight(function(v1, v2){
    return v1 - v2;
}, 100)); // 79

字符串

字符串就是零個(gè)(空字符串)或多個(gè)排在一起的字符,放在單引號(hào)或雙引號(hào)之中坑雅。
如果要在單引號(hào)字符串的內(nèi)部辈挂,使用單引號(hào)(或者在雙引號(hào)字符串的內(nèi)部,使用雙引號(hào))霞丧,就必須在內(nèi)部的單引號(hào)(或者雙引號(hào))前面加上反斜杠呢岗,用來(lái)轉(zhuǎn)義。

var str = '\'Hello\''
//str = 'Hello'

注意:斜線和需要轉(zhuǎn)義的字符構(gòu)成一個(gè)字符蛹尝,而不是兩個(gè)后豫。
如果想在輸出的字符串中包含斜杠本身,即將斜杠本身進(jìn)行轉(zhuǎn)義突那,即

var str = '\\Hello\\'
//str = '\Hello\'

換行
如果想在定義字符串時(shí)換行(字符串不允許分行定義)挫酿,需要在換行時(shí)對(duì)換行進(jìn)行轉(zhuǎn)義,即在換行前加斜杠(轉(zhuǎn)義符號(hào)之后再也不可以添加任何字符愕难,包括但不限于數(shù)字早龟,字母,符號(hào)猫缭,空格)

var str = 'long \
long \
ago'
// str = 'long long ago'

或者可以使用連接運(yùn)算符(+)連接多個(gè)單行字符串

var longString = 'Long '
  + 'long '
  + 'long '
  + 'string';

ES6提供了一種新的允許字符串換行的方法葱弟,如下

var str = `str1
str2
str3
`
// str = "str1
str2
str3
"

常見(jiàn)的字符串方法

長(zhǎng)度計(jì)算,拼接

    var str = "hello";
//定義字符串變量str
    console.log( str.length );
//獲取字符串長(zhǎng)度
    console.log( str[0] );
//獲取字符串的第一位
    console.log( str[str.length - 1]  );
//獲取字符串的最后一位
    console.log( str.charAt(0) );
//獲取字符串的第一位
    console.log( str.charCodeAt(0) );
//返回字符串第一個(gè)字符的 Unicode 編碼

    var str2 = " world";
    var str3 = str1 + str2;
//拼接字符串str1和str2
    cosnole.log( str3 );
//

字符串截取

    var str = "hello world";
    var sub1 = str.substr(1, 3); // 第一個(gè)是開(kāi)始位置猜丹, 第二個(gè)是長(zhǎng)度  截取結(jié)果是字符串'ell'
    var sub2 = str.substring(1, 3); // 第一個(gè)是開(kāi)始位置芝加,第二個(gè)是結(jié)束位置,長(zhǎng)度為第二個(gè)-第一個(gè)  el
    var sub3 = str.slice(1, 3); // 同上 允許負(fù)參

查找

    var str = "hello my world";
    var s1 = str.search('my');   //查找到字符串起始位置為6 找不到則返回結(jié)果-1
    var s2 = str.replace('my', 'your'); //將查找到的字符串'my'替換為'your'
    var s3 = str.match('my'); //返回匹配的數(shù)組

大小寫(xiě)

    var str = "Hello";
    str.toUpperCase();//使字符串變?yōu)榇髮?xiě)
    str.toLowerCase();//使字符串變?yōu)樾?xiě)射窒,兩種方法均不對(duì)原字符串進(jìn)行操作
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末藏杖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子脉顿,更是在濱河造成了極大的恐慌蝌麸,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艾疟,死亡現(xiàn)場(chǎng)離奇詭異来吩,居然都是意外死亡敢辩,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)弟疆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)责鳍,“玉大人,你說(shuō)我怎么就攤上這事兽间。” “怎么了正塌?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵嘀略,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我乓诽,道長(zhǎng)帜羊,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任鸠天,我火速辦了婚禮讼育,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘稠集。我一直安慰自己奶段,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布剥纷。 她就那樣靜靜地躺著痹籍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪晦鞋。 梳的紋絲不亂的頭發(fā)上蹲缠,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音悠垛,去河邊找鬼线定。 笑死,一個(gè)胖子當(dāng)著我的面吹牛确买,可吹牛的內(nèi)容都是我干的斤讥。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼拇惋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼周偎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起撑帖,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蓉坎,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后胡嘿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蛉艾,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了勿侯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拓瞪。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖助琐,靈堂內(nèi)的尸體忽然破棺而出祭埂,到底是詐尸還是另有隱情,我是刑警寧澤兵钮,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布蛆橡,位于F島的核電站,受9級(jí)特大地震影響掘譬,放射性物質(zhì)發(fā)生泄漏泰演。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一葱轩、第九天 我趴在偏房一處隱蔽的房頂上張望睦焕。 院中可真熱鬧,春花似錦靴拱、人聲如沸垃喊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缔御。三九已至,卻和暖如春妇蛀,著一層夾襖步出監(jiān)牢的瞬間耕突,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工评架, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眷茁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓纵诞,卻偏偏與公主長(zhǎng)得像上祈,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子浙芙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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

  • 原文: https://github.com/ecomfe/spec/blob/master/javascript...
    zock閱讀 3,371評(píng)論 2 36
  • PHP常用函數(shù)大全 usleep() 函數(shù)延遲代碼執(zhí)行若干微秒登刺。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解...
    上街買(mǎi)菜丶迷倒老太閱讀 1,360評(píng)論 0 20
  • 他總能看穿你的軟肋,做你做合身的鎧甲嗡呼。
    Star_楠閱讀 176評(píng)論 0 0
  • 昨天我在咖啡館等朋友的時(shí)候南窗,隔壁桌兩小孩突然打起來(lái)了揍很。其實(shí)也不算是打郎楼,就是小男孩推搡了一把小女孩,小女孩在那狂嚎窒悔,...
    半樸園閱讀 610評(píng)論 0 0
  • 你問(wèn)我有多喜歡你 我說(shuō):如同風(fēng)吹千里简珠,不問(wèn)歸期 你問(wèn)我有多想念你 我說(shuō):情難自禁阶界,總會(huì)秒回你所有的信息 你問(wèn)我有多...
    明悅心理閱讀 213評(píng)論 0 0