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

數(shù)組

基本使用和一些常用方法

var arr = [1,2,3,4.5,6,7,8] //數(shù)組成員用逗號(hào)隔開。注意!不要以逗號(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開始,[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ù)組最后一位彈出來,返回,賦值給value
console.log(value)       //'jirengu'
console.log(arr)         //[3, 4, 5, 6, 'hello'],已經(jīng)通過pop操作,彈出了數(shù)組最后一個(gè)成員'jirengu'

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

var arr2 = arr.splice(1, 2)         //從下標(biāo)為1的元素開始,拿出來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的位置開始,刪除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開始,到下標(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ù)組成員用-連接起來。’-‘可以是其他符號(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)沒有參數(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ù),用來判斷一個(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è)指定元素后返回其索引,沒有查找到返回-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;沒有查找到,返回-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)寫在前面,可以使運(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類似,遍歷數(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從索引最小值開始,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))前面加上反斜杠,用來轉(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
"

常見的字符串方法

長(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è)是開始位置, 第二個(gè)是長(zhǎng)度  截取結(jié)果是字符串'ell'
    var sub2 = str.substring(1, 3); // 第一個(gè)是開始位置,第二個(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ù)組

大小寫

    var str = "Hello";
    str.toUpperCase();//使字符串變?yōu)榇髮?    str.toLowerCase();//使字符串變?yōu)樾懀瑑煞N方法均不對(duì)原字符串進(jìn)行操作
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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