[英]why does Object.keys(array) return the indexes as a string, and keys(array) returns them as 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.