簡體   English   中英

為什么 javascript 中長度為 N 的空數組沒有索引?

[英]Why an empty array of N length in javascript does not have indices?

所以我在 Javascript 中創建了一個空數組

const x = Array(5);

或者

const x = new Array(5);

如果我檢查長度,在這兩種情況下都是5 ,但是當我使用.map循環它時,它沒有給我索引,即0,1,2,3,4

x.map((el, i) => i);

這應該返回[0,1,2,3,4]

因為規范要求當使用 Array 構造函數創建數組時,其中values是參數列表:

a. Let len be values[0].
b. Let array be ! ArrayCreate(0, proto).
c. If Type(len) is not Number, then
  i. Perform ! CreateDataPropertyOrThrow(array, "0", len).
  ii. Let intLen be 1𝔽.
d. Else,
  i. Let intLen be ! ToUint32(len).
  ii. If SameValueZero(intLen, len) is false, throw a RangeError exception.
e. Perform ! Set(array, "length", intLen, true).
f. Return array.

這就是它所做的一切,沒有別的。 簡而言之,它創建一個繼承自Array.prototype的新數組 object ,然后在其上設置一個length屬性。 它不會在數組上創建任何數字索引。

就像是

 const createArray = (length) => { const newArr = Object.create(Array.prototype); newArr.length = length; return newArr; }; const arr = createArray(5); console.log(arr.length); console.log(arr.hasOwnProperty('0'));

因此,如果你想遍歷數組,你必須先以某種方式填充它——要么使用.fillArray.from ,要么將其傳播到一個新數組中。 .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM