2015-07-19 69 views
1

這裏的一個短JS函數試圖從陣列檢索對象並訪問其唯一字段:如何從數組中檢索和訪問JavaScript對象文字中的字段?

function foo() 
{ 
    var fruitLiteral = {name : "Orange"}; 
    var myArray = []; 
    myArray.push(fruitLiteral); 
    console.log(" myArray after push " + myArray); 
    var rc = myArray.splice(0,1); 
    console.log(" myArray after splice " + myArray); 
    console.log(rc.name); 
} 

和輸出:

myArray after push [object Object] 
myArray after splice 
undefined //wanted to see rc.name, or "Orange" here. 

顯示陣列之後如預期已經被排空拼接,但我總是得到「未定義」的項目從拼接檢索時,它是一個文字對象。我的錯誤在哪裏?

+0

線'的console.log(「推後myArray的」 + myArray的);'是* *串接與陣列的串,並且你最終'myArray的推[對象的對象]後'在控制檯。嘗試'console.log(「推後的myArray」,myArray);'你會得到更好的信息:) –

+1

'rc'是一個數組。你可以用'rc [0] .name'來訪問它中的第一個對象。 – jfriend00

回答

1

問題是您的fruitLiteral仍然作爲rc數組拼接後的第一個元素存儲,因此您需要像這樣對待它。

function foo() 
{ 
    var fruitLiteral = {name : "Orange"}; 
    var myArray = []; 
    myArray.push(fruitLiteral); 
    console.log(" myArray after push " + myArray); 
    var rc = myArray.splice(0,1); 
    console.log(" myArray after splice " + myArray); 
    console.log(rc[0].name); 
} 
+1

陣列中沒有任何東西。拼接將其刪除,因爲它應該有。 – swingMan

+2

你的問題是「爲什麼我在console.log中看不到結果或'rc.name'」?我給出的答案是正確的。 – brezanac

+1

@swingMan - 'rc'是從'myArray'的第一個元素'myArray.splice()'返回的值。 – jfriend00

相關問題