开发者问题收集

Javascript json 数组值

2018-01-07
78

我有以下 JSON:

{"title":"MYTITLE","employer":"MYEMPLOYER","weekends":[["6"],["8"],["15"]]}

我需要访问周末才能获得此信息:

6
8
15

这是我的尝试:

var json = $.parseJSON(data);
for (var i = 0, len = data.weekends.length; i < len; i++) {
    console.log(data.weekends[i]);
}

但 chrome 控制台日志中的结果是空的...如果我理解正确的话...我读取了转换为数组的 json 的长度,并在循环中读取了索引数组中的值。

但我总是收到错误:

Uncaught TypeError: Cannot read property 'length' of undefined

为什么周末长度未定义?我设置了命令长度,但它无法识别它是一个数组,也无法计算长度,因此 for 循环无法工作。

2个回答

问题是您使用 data 访问周末,而这只是原始的 JSON 字符串。您需要访问 json 变量,即已解析的 JSON

以下是工作代码:

const data = {"title":"MYTITLE","employer":"MYEMPLOYER","weekends":[["6"],["8"],["15"]]};

// To avoid calculation of length on every iteration
const weekendLength = data.weekends.length;

for(let i = 0; i < weekendLength; i++){
    console.log(data.weekends[i][0]);
}

在这里,我将 JSON 数据直接设置为变量。就您而言,您很可能从网络请求中获取数据。在这种情况下,就像您在代码中所做的那样,您需要先对其进行解析。(通过调用 $.parseJSON()

code
2018-01-07
var data = {"title":"MYTITLE","employer":"MYEMPLOYER","weekends":[["6"],["8"],["15"]]};
for (var i = 0, len = data.weekends.length; i < len; i++){
    console.log(data.weekends[i]);
}
Devang Patel
2018-01-07