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ù)組是一種特殊的對象,數(shù)組的key是正整數(shù)字符串,我們一般使用數(shù)字鍵操作數(shù)組,會自動轉(zhuǎn)換成字符串
const arr = []; arr['1'] = 1; //1被自動轉(zhuǎn)換成'1' console.log(arr[1],arr['1']); //1 typeof arr; //obejct
3.數(shù)組的length
數(shù)組的length計算的是數(shù)組中正整數(shù)的個數(shù),但你依然可以將數(shù)據(jù)的key設(shè)置為其它類型的值,不過這不會增加length的長度
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)鍵用來判斷數(shù)組中存在某個鍵,可應(yīng)用于數(shù)組和對象
const arr = ['a','b']; 1 in arr; // true 2 in arr; //fasle
5. for…in
- for…in用來遍歷數(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ù)組的空位
- 即兩個逗號之間沒有任何值會產(chǎn)生空值(empty)
- 使用delete會產(chǎn)生empty
- 數(shù)組的lengt包含empty
var arr = [1,5,,8]; console.log(arr); //[1, 5, empty, 8] //使用delete也會產(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); }; //無輸出,沒有進(jìn)行遍歷 arr1.forEach((v) => { console.log(v) }); //無輸出,沒有進(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 × 10
7.類數(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添加了一個數(shù)字鍵,但length沒有改變,這就說明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不會被for…in和forEache以及Object.keys運(yùn)算,但計算length的時候會包含empty,因此使用length循環(huán)帶有empty的數(shù)組時要格外小心
- 類數(shù)組也叫偽數(shù)組,是指對象的屬性為正整數(shù)或者零而且具有l(wèi)ength屬性的對象
- 使用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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Javascript數(shù)組的?splice?方法詳細(xì)介紹
- Javascript數(shù)組的?forEach?方法詳細(xì)介紹
- JavaScript實(shí)現(xiàn)字符串轉(zhuǎn)數(shù)組的6種方法總結(jié)
- 20個常見的JavaScript數(shù)組操作總結(jié)
- 關(guān)于JavaScript中的數(shù)組方法和循環(huán)
- JavaScript中數(shù)組reduce()方法使用詳情
- js如何獲取對象在數(shù)組中的index
- JS實(shí)現(xiàn)數(shù)組/對象數(shù)組刪除其中某一項(xiàng)
- JS對象數(shù)組中如何匹配某個屬性值
相關(guān)文章
微信小程序?qū)崿F(xiàn)傳遞多個參數(shù)與事件處理
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)傳遞多個參數(shù)與事件處理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08ES6數(shù)組復(fù)制和填充方法copyWithin()、fill()的具體使用
本文主要介紹了ES6數(shù)組復(fù)制和填充方法copyWithin()、fill()的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10JavaScript實(shí)現(xiàn)tab欄切換的幾種常用方法
這篇文章主要給大家介紹了關(guān)于JavaScript實(shí)現(xiàn)tab欄切換的幾種常用方法,在Web開發(fā)中Tab切換是一個常見的功能,它允許用戶在不同的頁面部分之間進(jìn)行切換,需要的朋友可以參考下2023-12-12微信小程序生成海報分享朋友圈的實(shí)現(xiàn)方法
利用微信強(qiáng)大的社交能力通過小程序達(dá)到裂變的目的,拉取新用戶。下面小編給大家?guī)砹宋⑿判〕绦蛏珊蠓窒砼笥讶Φ膶?shí)現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧2019-05-05