一、什麼是偽數組
偽數組指的是長得像數組,但實際上不是真正的數組,它們是由arguments
、DOM集合
、NodeList
等對象提供的。這些對象只支持一部分數組方法,無法使用數組的全部屬性和方法。
二、為什麼需要把偽數組轉化為真數組
在JavaScript編程中,我們通常需要使用數組來存儲和操作數據,而某些情況下我們只能使用偽數組,這時就需要把偽數組轉化為真數組,以便於使用數組的全部屬性和方法。
三、如何將偽數組轉化為真數組
1.使用Array.from方法
const fakeArray = {
0: 'a',
1: 'b',
2: 'c',
length: 3
};
const realArray = Array.from(fakeArray);
console.log(realArray); // ["a", "b", "c"]
我們可以使用Array.from()
方法將偽數組轉化為真數組,這個方法可以接收一個類數組對象、可迭代對象等,返回一個新的真實數組。
2.使用Array.prototype.slice方法
const fakeArray = {
0: 'a',
1: 'b',
2: 'c',
length: 3
};
const realArray = Array.prototype.slice.call(fakeArray);
console.log(realArray); // ["a", "b", "c"]
我們也可是使用Array.prototype.slice.call()
方法將偽數組轉化為真數組,這個方法將原本只能操作數組的Array.prototype.slice()
方法的this
指針指向偽數組對象。
3.使用展開運算符
const fakeArray = {
0: 'a',
1: 'b',
2: 'c',
length: 3
};
const realArray = [...fakeArray];
console.log(realArray); // ["a", "b", "c"]
我們還可以使用ES6新增的展開運算符...
將偽數組轉化為真數組,將偽數組對象作為展開運算符的參數,就可以直接轉化為真正的數組。
四、擴展:偽數組和真數組的區別
偽數組通過Object
對象模擬數組,它們和真數組有一些區別:
- 擁有一部分數組屬性和方法,無法使用數組的全部屬性和方法;
- 無法使用數組字面量表達式創建,只能手動構造;
- 原型鏈不同,偽數組原型鏈中沒有
Array
而是Object
。
總之,偽數組只是長得像數組,表現出一些類似數組的行為和特徵,但它們不完全滿足數組的特徵,無法完全代替真數組。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/293485.html