【问题标题】:Traversing a non-standard object property in JavaScript [duplicate]在 JavaScript 中遍历非标准对象属性 [重复]
【发布时间】:2014-05-24 23:14:24
【问题描述】:

我正在使用通过 AJAX 向我返回响应的 API,它在 responseJSON 中返回响应,因此我使用点符号访问我需要的对象部分,就像使用任何其他 AJAX 调用一样

var test = jqxhr.responseJSON.test;

对象的字面表示是:

test = {1_status: "invalid", 4_type: "domain.com", 1_type: "alpha.domain.com", 4_email: "admin@domain.com", 3_email: "admin@charlie.domain.com"…}

console.log(test) 之后在控制台中显示为这样

1_email: "admin@alpha.domain.com"
1_status: "invalid"
1_type: "alpha.domain.com"
2_email: "admin@bravo.domain.com"
2_status: "invalid"
2_type: "bravo.domain.com"
3_email: "admin@charlie.domain.com"
3_status: "invalid"
3_type: "charlie.domain.com"
4_email: "admin@domain.com"
4_status: "invalid"
4_type: "domain.com"
errorCode: "0"

我如何在如下的for 循环交互中通过1_email 之类的键访问值。

for (var i = 1; i <= 4; i++){
  // access key values here like so:
  //console.log(test.i_email);
  // where the console should return admin@alpha.domain.com on the first interation
}

如果我只是在手动调用某个键的循环之外执行以下操作:

console.log(test.1_email);

我得到以下信息:

Uncaught SyntaxError: Unexpected token ILLEGAL 

我需要使用 [i]_status 访问每个部分,因为我不知道确切的返回值和顺序更改,不幸的是我无法直接访问 API。

感谢任何帮助。

【问题讨论】:

    标签: javascript json


    【解决方案1】:

    您可以使用索引器来做到这一点。

    test[i + '_email']
    

    【讨论】:

    • 效果很好,我从未在test[i] 之外使用过indexing,所以我什至没有想到这一点。谢谢一吨:)
    • 在 javascript x[y] 中没有索引。这是属性访问。
    猜你喜欢
    • 1970-01-01
    • 2017-08-30
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    相关资源
    最近更新 更多