2016-12-29 123 views
0

我有一個數組,其中包含具有鍵值對的兩個對象。我想知道如何檢索數組的值FirstObj使用鍵獲取Array對象的值

嘗試這種至今:

var getKeyValue= []; 
for(var i=0;i<myChartArray.length;i++) 
{ 
    getKeyValue.push(myChartArray[i]["FirstObj"]); 

} 
+1

你可能需要var''之間的空間和'i' –

+1

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/filter – Satpal

+0

您可以添加如何製作'myChartArray'嗎? – moffeltje

回答

2

您可以使用Array.prototype.find

let firstObj = myChartArray.find(item => item.Key === 'FirstObj'); 
console.log(firstObj.Value); 

請注意,此代碼使用ES6功能。

0

如果你不想使用ES6,你可以使用Array.prototype.filter()

功能會是這個樣子:

var yourValue = yourArray.filter(function(object) { 

    return object.Key === 'FirstObj'; 

})[0].Value; 

變量yourValue然後將包含您所尋找的價值。


或者,如果您只是需要解決這種特殊情況,而不是尋找一個迭代的,可擴展的解決方案。您可以靜態選擇對象和值。這假定您可以確定數組中對象的順序。如果上面是真心對你的,你可以這樣做:

var value = youArray[0].Value;

+0

這是一個很好的解決方案,它在大多數情況下都很有意義,但要注意,這將遍歷整個'Array',而不是在找到值之後停止,這可能代價高昂如果'Array'非常長。 –

+0

True @LukaJacobowitz,但在上述具體情況中提供了最乾淨和最短的解決方案。 –

+0

指出使用給定解決方案的注意事項很好:) –

1

添加到str的答案,這是你會怎麼做沒有ES6:

function getFirstObj(myChartArray){ 
    for(var i=0; i < myChartArray.length; i++){ 
     if (myChartArray[i].Key === 'FirstObj'){ 
      return myChartArray[i] 
     } 
    } 
} 
0

你可以得到它使用filter()

var array = []; 
 
array.push({Key:"FirstObj", Value:"xyz"}); 
 
array.push({Key:"SecondObj", Value:"abc"}); 
 

 

 
var found = array.filter(function(item) { return item.Key === "FirstObj"; }); 
 

 
console.log(found[0]);

+2

這是一個不錯的解決方案,它在大多數情況下都很有意義,但要注意,這將遍歷整個'Array',而不是在找到值之後停止,如果'Array'非常長,這可能會很昂貴。 –

0

您可以使用array#find()

var array = [{Key:"FirstObj", Value:"xyz"}, {Key:"SecondObj", Value:"abc"}], 
 
    found = array.find(function(elem) { 
 
     return elem.Key === "FirstObj"; 
 
    }); 
 

 
console.log(found);