回顧數(shù)組字符串方法
數(shù)組對象方法
轉(zhuǎn)換數(shù)組(將數(shù)組轉(zhuǎn)換成一些其他形式):
valueOf()
返回數(shù)組對象本身,和直接輸出數(shù)組對象是一樣的toString()
把數(shù)組以逗號相連轉(zhuǎn)為字符串
var arr = [1, 2, 3, 4, 5];
console.log(arr.toString());
-
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ù)組類型
-
instanceof 關(guān)鍵字
注意它不是方法沒有(),并且也適用于其他判斷
var arr = [1,2,3,4,5];
console.log(arr instanceof Array); //true
console.log("a" instanceof Array); //false
Array.isArray()
var arr = [1,2,3,4,5];
console.log(Array.isArray(arr));//true
console.log(Array.isArray("a"));//false
增刪方法:
-
push()
從后面添加元素,返回新數(shù)組的長度
var arr = [11,22,33,44,55];
console.log(arr.push(99));
-
pop()
從后面刪除元素,返回被刪除的元素
var arr = [11,22,33,44,55];
console.log(arr.pop());
-
shift()
從前面刪除元素,返回被刪除的元素
var arr = [11,22,33,44,55];
console.log(arr.shift());
-
unshift()
從前面添加元素,返回新數(shù)組的長度
var arr = [11,22,33,44,55];
console.log(arr.unshift(0));
迭代方法:
-
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得以保留
-
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);
});
位置方法:
-
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
-
lastIndexOf()
返回從后往前找到數(shù)組中第一個a出現(xiàn)的位置
var arr = ["c", "a", "z", "a", "x", "a"];
console.log(arr.lastIndexOf("a"));//5
// indexOf的第二個參數(shù):從哪個索引開始找,包含該索引
// 找不到返回-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);
- 實例:統(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);
其他方法:
- slice截取數(shù)組,不會改變原數(shù)組,返回一個新數(shù)組
var arr = [4, 6, 7, 8, 3, 46, 8];
console.log(arr.slice(0, 2));//結(jié)果是[4, 6]
// 注:開始能取到,結(jié)束取不到 !
- splice刪除數(shù)組中的元素,會對原數(shù)組進行修改,返回刪掉的數(shù)組
var arr = [4, 6, 7, 8, 3, 46, 8];
console.log(arr.splice(0, 2));
// 從一個索引開始,刪除多少個元素
// 第三個參數(shù)可以往刪除的地方添加元素,可以添加多個,使用逗號隔開即可
- 清空數(shù)組:
var array = [1,2,3,4,5,6];
//方式1
array.splice(0,array.length); //刪除數(shù)組中所有項目
//方式2
array.length = 0; //length屬性可以賦值
//方式3
array = []; //推薦
字符串對象方法
截取方法
-
slice()
從start位置開始妻怎,截取到end位置,end取不到 -
substring()
從start位置開始,截取到end位置烹植,end取不到 -
substr()
從start位置開始,截取length個字符
位置方法 indexOf()
替換方法 replace()
字符方法 charAt()
其他方法
split()
trim()
-
charCodeAt()
//獲取指定位置處字符的ASCII碼 -
str[0]
//ES5库倘,IE8+支持 和charAt()等效
歸納整理數(shù)組字符串常用方法
字符串方法
var a="i love you!";
toUpperCase()
將小寫轉(zhuǎn)換成大寫toLowerCase()
將大寫轉(zhuǎn)換成小寫charAt()
返回指定位置的字符
document.write(a.charAt(4));//結(jié)果是v
// 注:字符是從0開始到length-1結(jié)束
-
indexOf()
返回指定字符的位置
document.write(a.charAt(v));//結(jié)果是4
lastIndexOf()
split()
返回被分割的字符串?dāng)?shù)組
document.write(a,split("v",2));//結(jié)果是["i lo","e you!"]
// 注:前面指定分割的位置,不填則分割成一個個字符;后面指定分割組數(shù),可不填
-
substring()
提取字符串
document.write(a.substring(2,5));//結(jié)果是love
document.write(a.substring(7));//結(jié)果是you!
// 注:前面指定開始提取的位置;后面指定結(jié)束提取的位置,不填則默認(rèn)到字符串最后
-
subsrt()
提取指定數(shù)目字符串
document.write(a.substr(2,4));//結(jié)果是love
document.write(a.substr(-4));//結(jié)果是you!
// 注:前面指定開始提取的位置;后面指定提取的長度,不填則默認(rèn)到字符串最后;若出現(xiàn)-,則表示倒著數(shù)
數(shù)組方法
-
concat()
連接數(shù)組,不改變原數(shù)組,返回一個新數(shù)組
var a=["1","2"];
var b=["3","4"];
document.write(a.concat(b));
//結(jié)果是["1","2","3","4"]
-
join()
用指定分隔符連接數(shù)組元素,返回string
var a=["I","love","you"];
document.write(a.join("."));//結(jié)果是I.love.you
// 注:若不指定,默認(rèn)","
-
reverse()
顛倒數(shù)組元素順序,會改變原數(shù)組
var a=["1","2"];
document.write(a.reverse());//結(jié)果是["2","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ù)
-
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"]
-
slice(start,end)
截取指定索引之間的字符串(包括start,不包括end),返回新的字符串
var str = "abcdaefga";
console.log(str.slice(1,5)); // "cda"
-
subString(start,stop)
截取指定索引之間的字符串(包括start,不包括stop),返回新的字符串
var str = "abcdaefga";
console.log(str.slice(1,5)); // "cda"
-
charAt(index)
返回指定位置的字符
var str = "abcde";
console.log(str.charAt(3)); // d
-
concat(str)
連接字符串,生成一個新的字符串,原字符串不會被改變
var str1 = "abc";
var str2 = "def";
console.log(str1.concat(str2)); // “abcdef”
-
trim()
去掉字符串的首尾的空格,返回新的字符串
var str = " abcd ";
console.log(str.trim()); // "abcd"