陣列的擴充套件 陣列的空位

2021-08-16 13:40:33 字數 2280 閱讀 9531

陣列的空位指,陣列的某一位置沒有任何值。比如,array建構函式返回的陣列都是空位

array(3)//[,,]

上面的陣列中array返回的是乙個具有三個空位的陣列

注意,空位不是undefined,乙個位置的值等於undefined,依然是有值的。空位是沒有任何值,in運算子可以說明這一點。

0 in [undefined, undefined, undefined] // true

0 in [, , ,] // false

上面**說明,第乙個陣列的 0 號位置是有值的,第二個陣列的 0 號位置沒有值。

es5 對空位的處理,已經很不一致了,大多數情況下會忽略空位。

foreach(), filter(), reduce(), every() 和some()都會跳過空位。

map()會跳過空位,但會保留這個值

join()和tostring()會將空位視為undefined,而undefined和null會被處理成空字串。

// foreach方法

[,'a'].foreach((x,i) => console.log(i)); // 1

// filter方法

['a',,'b'].filter(x => true) // ['a','b']

// every方法

[,'a'].every(x => x==='a') // true

// reduce方法

[1,,2].reduce((x,y) => return x+y) // 3

// some方法

[,'a'].some(x => x !== 'a') // false

// map方法

[,'a'].map(x => 1) // [,1]

// join方法

[,'a',undefined,null].join('#') // "#a##"

// tostring方法

[,'a',undefined,null].tostring() // ",a,,"

es6則明確將空位轉為undefined

array.from方法會將陣列的空位,轉為undefined,也就是說,這個方法不會忽略空位。

array.from(['a',,'b'])

// [ "a", undefined, "b" ]

擴充套件運算子(...)也會將空位轉為undefined

[...['a',,'b']]

// [ "a", undefined, "b" ]

copywithin()會連空位一起拷貝。

[,'a','b',,].copywithin(2,0) // [,"a",,"a"]
fill()會將空位視為正常的陣列位置。
new array(3).fill('a') // ["a","a","a"]
for...of迴圈也會遍歷空位

let arr = [, ,];

for (let i of arr)

// 1

// 1

entries()keys()values()find()findindex()會將空位處理成undefined

// entries()

[...[,'a'].entries()] // [[0,undefined], [1,"a"]]

// keys()

[...[,'a'].keys()] // [0,1]

// values()

[...[,'a'].values()] // [undefined,"a"]

// find()

[,'a'].find(x => true) // undefined

// findindex()

[,'a'].findindex(x => true) // 0

由於空位的處理規則非常不統一,所以建議避免出現空位。

陣列的空位問題

如果陣列的某個位置是空位,使用in運算子返回false var arr arr 100 a 100 in arr true 1 in arr false陣列的空位不影響length屬性的值 陣列的空位是可以讀取的,返回undefined var arr 1,2 arr 1 undefined使用de...

陣列的擴充套件

陣列的擴充套件 es5 的寫法 function f x,y,z var args 0 1,2 f.null args es6的寫法 function f x,y,z let args 0 1,2 f args array.from方法用於將兩類物件轉為真正的陣列 類似陣列的物件 array lik...

陣列的擴充套件

1.array.from 將類陣列物件轉換為陣列,將iterator介面的類陣列轉換為真正的陣列 它也可以接收乙個 函式,對陣列裡面的每乙個元素進行遍歷 可以用該方法輸出 獲取的dom集的每乙個dom元素的某個屬性或者文字內容 好方法!2.array.of 將一組值轉換為陣列 3.copywithi...