遍历Javascript对象搜索键值

时间:2015-11-03 01:23:28

标签: javascript jquery arrays

我试图从jquery ajax调用中获取一些特定数据,数据对象数组看起来像这样

Object {Version: Object, Content: null, StatusCode: 200, ReasonPhrase: "OK", Headers: Array[1]…}

我感兴趣的具体部分是

Headers --> Object -->Key "FORCE_REDIRECT"    ( FORCE_REDIRECT I wish to find and test if it exists)  

然后我想用

Value --> 0 -->  "Grid.html"      (Grid.html is where i plan to redirect to)

chrome dev工具控制台,这就是数组的样子

enter image description here

 console.log(data);  // shows me the array
 console.log(data.Key);   //undefined
 console.log(data[0].Key);  // blows up

2 个答案:

答案 0 :(得分:1)

您在尝试访问Headers对象时错过了某个属性(data):

console.log(data);
console.log(data.Headers[0].Key); //"FORCE_REDIRECT"
console.log(data.Headers[0].Value[0]); //"Grid.html"

答案 1 :(得分:1)

让我们更加谨慎,因此您的代码无法爆炸。

首先,您可以使用正确的密钥过滤if(!data.Headers){ //fail return; } var headers = data.Headers.filter(function(o){return o.Key && o.Key==="FORCE_REDIRECT";}); 数组以仅包含 对象:

var headerObj = headers[0];

拿第一个:

if(headerObj) //if it exists...
{
    var aValue = headerObj.Value[0]; //take the first value
    if(aValue) //if it exists...
    {
        doSomethingWith(aValue);
    }
}

确保它不为空:

public static readonly DependencyProperty ASLSelectedItemsProperty = DependencyProperty.Register("ASLSelectedItems", typeof(ObservableCollection<object>), typeof(MultiSelectionComboBox), new PropertyMetadata(null, OnSelectedItemsChanged));