2016-12-29 92 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);