如何访问二维数组元素?JavaScript中data数组mac属性访问求助
问题解答
一、为什么访问data[0].mac失败?
你遇到的核心问题大概率是AJAX请求的异步特性导致的:
- 你发起的
XMLHttpRequest是异步请求,代码执行到xhr.send()后会继续往下走,不会等待请求返回结果。如果在请求完成前就尝试访问data[0].mac,此时data还是空数组,自然拿不到值。 - 解决办法:所有需要用到
data的逻辑,必须放在onreadystatechange回调的请求成功分支(readyState == 4 && status == 200)内,或者用Promise封装请求后通过async/await处理。
另外要检查接口返回的res格式是否符合预期:
- 你用
res.split(']')分割字符串,再用el.split(',')拆出mac/ttl/time。如果接口返回的格式不是类似aa:bb:cc,123,456]dd:ee:ff,789,012]这种标准格式,分割后会得到无效值,导致data里没有正确存入对象。可以打开注释的console.log(res)看看实际返回内容是否符合预期。
正确使用示例:
xhr.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var res = this.responseText; //console.log(res); res.split(']').forEach((el) => { if (!el) return; const [mac, ttl, time] = el.split(','); const obj = data.find(o => o.mac === mac); if (obj) { obj.ttl = ttl; obj.time = time; } else { data.push({ mac, ttl, time }); } }); // 处理完数据后再访问data if (data.length > 0) { console.log(data[0].mac); // 这里就能正常获取值 } } };
二、如何访问二维数组中的单个值?
二维数组本质是“数组的数组”,直接通过双层索引访问:
- 语法:
二维数组名[外层索引][内层索引] - 示例:
const arr2D = [ [10, 20, 30], [40, 50, 60], [70, 80, 90] ]; console.log(arr2D[0][1]); // 输出20(第一个子数组的第二个元素) console.log(arr2D[2][0]); // 输出70(第三个子数组的第一个元素)
内容的提问来源于stack exchange,提问作者Root of pi
相关产品推荐
相关产品推荐

