簡體   English   中英

為什么Object.keys返回字符串數組而不是Numbers數組

[英]Why Object.keys is returns array of string instead of array of Numbers

當我運行以下代碼時

var obj = { 0: 'a', 1: 'b', 2: 'c' };
typeof Object.keys(obj)[0] //returns string

obj對象中我正在創建數字鍵。

任何原因,為什么它的字符串而不是number

始終為String類型。 如果您需要數字,則必須手動投射:

 var obj = { 0: 'a', 1: 'b', 2: 'c' }; var ids = Object.keys(obj).map(Number); console.log(ids); 

因為Object.keys返回一個包含字符串的數組

Object.keys()返回一個數組,其元素是與直接在對象上找到的可枚舉屬性相對應的字符串。 屬性的順序與手動循環對象的屬性所給出的順序相同。

你得到一個字符串數組,因為屬性名稱是字符串的定義。

屬性名稱必須是字符串。 這意味着非字符串對象不能用作對象中的鍵。 任何非字符串對象(包括數字)都通過toString方法進行類型轉換為字符串。

根據文檔, Object.keys()返回字符串數組

Object.keys()返回一個數組,其元素是與直接在對象上找到的可枚舉屬性相對應的字符串 屬性的順序與通過手動循環對象的屬性給出的順序相同。( 取自此處

如果要將其轉換為數字數組,請使用map()

 var obj = { 0: 'a', 1: 'b', 2: 'c' }; console.log(typeof Object.keys(obj).map(Number)[0]) 

Javascript對象沒有數字鍵! 所有鍵都是字符串。 總是。

如果要將其他內容映射到值,則應使用Map

 var obj = { 0: 'a', 1: 'b', 2: 'c' }; console.log(typeof Object.keys(obj).map(Number)[0]) 

暫無
暫無

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

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