JavaScript數(shù)組操作總結(jié)
1.定義
數(shù)組是按次序依次排列的一組值
- 任何數(shù)據(jù)類型都可以放入數(shù)組
- 數(shù)組可以嵌套形成多維數(shù)組
const arr = [0,'1',{},function(){}];
//二維數(shù)組
const arr1 = [1,2,[3,4,5],6];2.數(shù)組的本質(zhì)
數(shù)組是一種特殊的對(duì)象,數(shù)組的key是正整數(shù)字符串,我們一般使用數(shù)字鍵操作數(shù)組,會(huì)自動(dòng)轉(zhuǎn)換成字符串
const arr = []; arr['1'] = 1; //1被自動(dòng)轉(zhuǎn)換成'1' console.log(arr[1],arr['1']); //1 typeof arr; //obejct
3.數(shù)組的length
數(shù)組的length計(jì)算的是數(shù)組中正整數(shù)的個(gè)數(shù),但你依然可以將數(shù)據(jù)的key設(shè)置為其它類型的值,不過(guò)這不會(huì)增加length的長(zhǎng)度
const arr = []; arr[2.1] = 2.1; arr['a'] = 'a'; console.log(arr); //[2.1: 2.1, a: 'a'] console.log(arr.length); //0
length是可寫的
const arr = [1,2,3,4,5]; arr.length = 2; console.log(arr); //[1,2]
4. in
in關(guān)鍵用來(lái)判斷數(shù)組中存在某個(gè)鍵,可應(yīng)用于數(shù)組和對(duì)象
const arr = ['a','b']; 1 in arr; // true 2 in arr; //fasle
5. for…in
- for…in用來(lái)遍歷數(shù)組和對(duì)象
- 遍歷數(shù)組的時(shí)候不僅能遍歷整數(shù)的key,還能遍歷所有非整數(shù)的key
- Object.keys()也能獲取到數(shù)組的非整數(shù)的key
const arr = [1,2];
arr['a'] = 3;
arr[4.5] = 4;
for(key in arr){
console.log(key);
};
// 0
// 1
// a
/ 4.5
Object.keys(arr); // ['0', '1', 'a', '4.5']
6.數(shù)組的空位
- 即兩個(gè)逗號(hào)之間沒(méi)有任何值會(huì)產(chǎn)生空值(empty)
- 使用delete會(huì)產(chǎn)生empty
- 數(shù)組的lengt包含empty
var arr = [1,5,,8]; console.log(arr); //[1, 5, empty, 8] //使用delete也會(huì)產(chǎn)生空值 delete arr [0]; console.log(arr); //[empty, 5, empty, 8] console.log(arr.length); //4
- 空值和undefined有所區(qū)別,undefined參與for…in和forEach的遍歷,empty不參與遍歷
- Object.keys能獲取到undefined的key獲取不到empty的key
- 使用length能遍歷出empty
const arr1 = new Array(10); //[empty × 10]
for (key in arr1) {
console.log(arr1);
}; //無(wú)輸出,沒(méi)有進(jìn)行遍歷
arr1.forEach((v) => {
console.log(v)
}); //無(wú)輸出,沒(méi)有進(jìn)行遍歷
console.log(Object.keys(arr1)); //[]
const arr2 = [undefined, undefined, undefined]; //[empty × 10]
for (key in arr2) {
console.log(key);
};
//0
//1
//2
arr2.forEach((value, index) => {
console.log(value, index)
});
// undefined,0
// undefined,1
// undefinef,2
console.log(Object.keys(arr2)); //[3]
// 使用for循環(huán)遍歷empty
for(let i = 0;i<arr1.length;i++){
console.log(arr1[1])
};
//undefined × 107.類數(shù)組(偽數(shù)組)
類數(shù)組的定義:鍵名都是正整數(shù)或零,擁有l(wèi)ength屬性
const arrayLike = {
0:'a',
1:'b',
2:'c',
length:3
};
arrayLike[3] = 'd';
console.log(arrayLike[0]); //a
console.log(arrayLike.length); //3
上面的代碼為arrayLike添加了一個(gè)數(shù)字鍵,但length沒(méi)有改變,這就說(shuō)明arrayLike不是數(shù)組
典型的類數(shù)組有函數(shù)的arguments、大多數(shù)的元素DOM集合、字符串
function foo(){
console.log(arguments);
};
foo('tom','jack');
// {0:'tom', 1:'jack', length:2, callee:...}
console.log(document.getElementsByClassName('a'));
//{"0": ...,"1": ...,"2":..., "length":3}
const str = 'apple';
console.log(str.length); //5
consoel.log(str[2]); //p將偽數(shù)組轉(zhuǎn)為數(shù)組
- 使用Array.prototype.slice
- 使用拓展運(yùn)算符
function foo(){
const arr = Array.prototype.slice.call(arguments);
}
function foo(){
const arr = [...arguments]
}
function foo(...args){
}
總結(jié)
- 數(shù)組的empty和undefined有所區(qū)別,empty不會(huì)被for…in和forEache以及Object.keys運(yùn)算,但計(jì)算length的時(shí)候會(huì)包含empty,因此使用length循環(huán)帶有empty的數(shù)組時(shí)要格外小心
- 類數(shù)組也叫偽數(shù)組,是指對(duì)象的屬性為正整數(shù)或者零而且具有l(wèi)ength屬性的對(duì)象
- 使用Array.prototype.slice.call()或者拓展運(yùn)算符將類數(shù)組轉(zhuǎn)換為數(shù)組,類數(shù)組可以使用call函數(shù)借用數(shù)組的方法
到此這篇關(guān)于JavaScript數(shù)組操作總結(jié)的文章就介紹到這了,更多相關(guān)JS數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Javascript數(shù)組的?splice?方法詳細(xì)介紹
- Javascript數(shù)組的?forEach?方法詳細(xì)介紹
- JavaScript實(shí)現(xiàn)字符串轉(zhuǎn)數(shù)組的6種方法總結(jié)
- 20個(gè)常見(jiàn)的JavaScript數(shù)組操作總結(jié)
- 關(guān)于JavaScript中的數(shù)組方法和循環(huán)
- JavaScript中數(shù)組reduce()方法使用詳情
- js如何獲取對(duì)象在數(shù)組中的index
- JS實(shí)現(xiàn)數(shù)組/對(duì)象數(shù)組刪除其中某一項(xiàng)
- JS對(duì)象數(shù)組中如何匹配某個(gè)屬性值
相關(guān)文章
JS獲取當(dāng)前時(shí)間的兩種方法小結(jié)
這篇文章主要給大家介紹了關(guān)于JS獲取當(dāng)前時(shí)間的兩種方法,在web開(kāi)發(fā)中,通過(guò)js獲取時(shí)間非常的常用,我這里做個(gè)總結(jié),需要的朋友可以參考下2023-09-09
JavaScript實(shí)現(xiàn)淘寶商品圖切換效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)淘寶商品圖切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
JS偽繼承prototype實(shí)現(xiàn)方法示例
這篇文章主要介紹了JS偽繼承prototype實(shí)現(xiàn)方法,結(jié)合實(shí)例形式對(duì)比分析了基于prototype實(shí)現(xiàn)模擬繼承的相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
uniapp 微信默認(rèn)地圖選點(diǎn)功能實(shí)現(xiàn)
這篇文章主要介紹了uniapp 微信默認(rèn)地圖選點(diǎn)功能實(shí)現(xiàn),本文通過(guò)實(shí)例代碼效果圖展示給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-07-07
簡(jiǎn)單實(shí)現(xiàn)JS上傳圖片預(yù)覽功能
這篇文章主要為大家詳細(xì)介紹了如何簡(jiǎn)單實(shí)現(xiàn)JS上傳圖片預(yù)覽功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
es6中Promise 對(duì)象基本功能與用法實(shí)例分析
這篇文章主要介紹了es6中Promise 對(duì)象基本功能與用法,結(jié)合實(shí)例形式分析了es6中Promise對(duì)象的基本功能、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-02-02
layui2.0使用table+laypage實(shí)現(xiàn)真分頁(yè)
這篇文章主要為大家詳細(xì)介紹了layui2.0使用table+laypage實(shí)現(xiàn)真分頁(yè),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
用JS實(shí)現(xiàn)簡(jiǎn)單的屏幕錄像機(jī)功能
這篇文章主要給大家介紹了如何用JS實(shí)現(xiàn)簡(jiǎn)單的屏幕錄像機(jī),文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-12-12
JavaScript執(zhí)行環(huán)境及作用域鏈實(shí)例分析
這篇文章主要介紹了JavaScript執(zhí)行環(huán)境及作用域鏈,結(jié)合實(shí)例形式分析了JavaScript執(zhí)行環(huán)境及作用域鏈的相關(guān)概念、功能與使用技巧,需要的朋友可以參考下2018-08-08

