2013-04-30 203 views
0

獲取價值,我試圖讓第一值類似於對象:從嵌套對象

{ 
"_id":"123", 
    "list":{"56":{"name":"Great ","amount":100,"place":"Town"},"57":{"name":"Great 2","amount":200,"place":"City"}}, 
    "pop":[2,3] 
} 

這是大約100個左右1個對象。我想從list屬性的第一個值中獲取amount這100個對象中的每一個?即如此在上面它將是100

我該怎麼做?我正在使用下劃線JS?

+0

你的 「清單」是一個普通的對象,而不是一個數組,所以沒有「第一個」值。 – Bergi 2013-04-30 10:43:31

+0

向我們展示如何訪問這100個對象,而不僅僅是一個提取的示例。 – Bergi 2013-04-30 10:45:01

回答

0

您正在將列表定義爲object。對象屬性按照他們定義的順序,但我們不能相信它的順序。我認爲Chrome有錯誤,它https://code.google.com/p/v8/issues/detail?id=164

以下first方法給出了從列表對象第一個元素,此功能將作品大多數情況下,若對象爲空則返回undefined值。

var data = { 
"_id":"123", 
    "list":{ 
     "56":{"name":"Great ","amount":100,"place":"Town"}, 
     "57":{"name":"Great 2","amount":200,"place":"City"} 
    }, 
    "pop":[2,3] 
}; 


function first(data){ 

    for (var i in data){ 
     if (data.hasOwnProperty(i)) break;  
    } 

    return data.hasOwnProperty(i) ? data[i] : undefined; 
} 

first(data.list).amount; 

如果要保留列表的順序,請將它們定義爲Array。例如

var data = { 
"_id":"123", 
    "list":[ 
     {"id" : "56" ,"name":"Great ","amount":100,"place":"Town"}, 
     {"id" : "57" ,"name":"Great 2","amount":200,"place":"City"} 
    ], 
    "pop":[2,3] 
}; 

,並訪問他們作爲data.list[0]

0

如果你需要得到所有鍵你可以試試這個

function getFirstAmount(obj){ 
    for(var key in obj){ 
     return obj[key].amount; 
    } 
} 

,你可以試試這個

function getAmounts(obj){ 
    var amounts = []; 
    var i = 0; 
    for(var key in obj){ 
      amounts[i] = obj[key].amount; 
      i++; 
     } 
    } 
    return amounts; 
} 

//call function 
    var firstAmount = getFirstAmount(obj.list);