如何在JavaScript中将服务器返回的数组存入另一个数组
实现每次获取的MAC数据存入全局数组
修改方案
- 声明一个全局数组,用来累积每次从服务器获取到的所有MAC数据
- 修复原代码中变量未声明导致的隐式全局问题
- 每次处理得到单组
macIdData后,将其存入全局数组
修改后的完整代码
// 声明全局数组,用于存储所有历史MAC数据 let allMacData = []; setInterval(function() { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var myObj = this.responseText; snifferOnServer(myObj); } }; xhr.open('GET', 'http://192.168.43.154/wifimac', true); xhr.send(); }, 7000); function snifferOnServer(x) { let obj = x.split(']'); for (let i = 0; i < obj.length; i++) { // 修复变量作用域,添加let声明 let mac = obj[i]; let macIdData = mac.split(','); // 过滤空数组(处理split后可能出现的空元素) if (macIdData.length > 0 && macIdData[0].trim() !== '') { allMacData.push(macIdData); } console.log('当前单组数据:', macIdData); console.log('所有累积数据:', allMacData); } }
关键说明
allMacData是全局变量,会持续保存每次请求返回的所有macIdData数组,不会因为请求周期重置- 给
mac和macIdData添加let声明,避免它们成为全局变量导致的意外覆盖 - 增加了空数组过滤逻辑,防止服务器返回的数据拆分后产生无效的空元素存入数组
- 可以通过
console.log(allMacData)随时查看所有累积的历史数据
内容的提问来源于stack exchange,提问作者Ramesh A
相关产品推荐
相关产品推荐

