2017-06-05 34 views
0

從下面的函數應該從鉻控制檯返回的數組顯示像這​​樣?在chrome/node/canary中返回一個數組,返回時髦數組的屬性?

[ name: 'Mike', age: 60, role: 'director' ] 

當我在chrome控制檯中鍵入數組時,我得到一個預期的語法錯誤返回。我知道我設置了一個空陣列的屬性,但我認爲陣列不會像這樣顯示 [ name: 'Mike', age: 60, role: 'director' ]

這個chrome試圖通過告訴我屬性來幫助我嗎?

在jsfiddle,firefox和safari中輸入函數返回一個空數組,但chrome顯示數組的屬性。

var object = { 
 
    name: 'Mike', 
 
    age: 60, 
 
    role: 'director' 
 
} 
 
var array = [] 
 

 
function test_reduce(object) { 
 
    return Object.keys(object).reduce(function(array, key) { 
 
    array[key] = object[key] 
 
    return array; 
 
    }, array) 
 
} 
 

 
var dummy_1 = test_reduce(object) 
 
console.log(dummy_1) 
 

 
function test_Loop(object) { 
 
    for (var key in object) { 
 
    array[key] = object[key] 
 
    } 
 
    return array; 
 
} 
 

 
var dummy_1 = test_reduce(object) 
 
console.log(dummy_1) 
 
console.log(test_Loop(object))

我使用

Chrome Version 61.0.3119.0 (Official Build) canary (64-bit) 
Chrome Version 58.0.3029.110 (64-bit) 
Node.js v7.7.4 
Safari Version 10.1.1 (12603.2.4) 
Firefox 53.0.3 (64-bit) 
+0

數組和對象不可互換。 – pvg

+1

數組仍然是一個對象,因此可以具有像對象一樣的屬性。猜測,我只是說這是Chrome選擇向您顯示陣列及其屬性的方式。 – Phil

+1

如果您檢查FF中的展開視圖(單擊控制檯中的* Array *鏈接),您將獲得與chrome dev-tools中顯示的屬性相同的屬性。 – Kaiido

回答

1

返回的數組在所有情況下都是相同的,儘管默認情況下其他瀏覽器未列出數組的屬性,但chrome確實(特定於使用空數組作爲映射時的場景)。例如,如果您單擊在Firefox控制檯上返回的空數組,它將列出您添加的屬性。

0

數組是專門的對象。雖然Chrome會讓你輸入非數字鍵,但許多其他瀏覽器的表現會不正常。也許你正在將PHP數組與JavaScript數組混合在一起。

PHP數組更像JavaScript對象。 JavaScript數組更類似於c/java風格的數組(技術上,它是一個鏈表)。