获取javascript数组中item的单个属性

时间:2013-12-20 17:11:39

标签: javascript arrays

在ajax请求的成功回调中,我得到一个对象,它是一个对象数组(poList)。我想遍历这个列表,如果status属性是什么,那么就做点什么。

在下面的示例中,response.PoList是一个有效的数组对象,其中包含两个项目,x0(在调试器中,我可以将鼠标悬停在PoList上并且它可以正常工作);但是,status不存在(即,此if语句始终为false)。我在这做错了什么

for (var x = 0; x < response.PoList.length; x++) {
    if (response.PoList[x].Status == 'Not edited') {
        response.PoList[x].StatusNum = 1;
    } else {
        response.PoList[x].StatusNum = 3
    }
}

修改

请参阅下面的截图,我不认为这是一个区分大小写的问题。因此,突出显示的是response.PoList(不只是response),x目前是0,如果我将鼠标悬停在Status上,我什么也得不到(没有“ undefined“工具提示或其他任何内容”

enter image description here

3 个答案:

答案 0 :(得分:2)

您的代码按提供的方式工作 - 具体取决于它是否与您的数据实际匹配。

Live Demo

我根据你的代码制作了这个例子。如果您的响应对象不同,那么,是的,您做错了。

另外,我回应Mr. Zimmerman's comment;这可能很容易成为大写问题。

response = {
    PoList: [
        { 
            foo: 'bar',
            Status: 'edited'
        },
        { 
            foo: 'baz',
            Status: 'Not edited'
        },
        { 
            foo: 'barbar',
            Status: 'Not edited'
        }
    ]
};

for (var x = 0; x < response.PoList.length; x++) {
    if (response.PoList[x].Status === 'Not edited') {
        response.PoList[x].StatusNum = 1;
    } else {
        response.PoList[x].StatusNum = 3;
    }
}

答案 1 :(得分:0)

检查是否存在response.PoList[x].Status

for (var x = 0; x < response.PoList.length; x++) {
  if (response.PoList[x].Status && response.PoList[x].Status == 'Not edited') {
    response.PoList[x].StatusNum = 1;
  } else {
    response.PoList[x].StatusNum = 3
  }
}

Fiddle

答案 2 :(得分:0)

你在这里遗漏了一个分号response.PoList[x].StatusNum = 3。除此之外,我认为所提供的代码没有任何问题,因此不能在响应中设置PoList的变量Status