繁体   English   中英

数组的 console.log 返回 undefined

[英]console.log of array returns undefined

我正在尝试从 object 中获取两条数据并将其作为新的 object 推送到数组中。 数据由对我的 SQL 数据库的 API 调用提供。 API 调用工作正常,并在控制台表中显示 object。 当脚本运行 forEach 方法将数据提取到它自己的 object 中,然后将新的 object 推送到新数组时,新数组返回“undefined”。 代码如下:

示例数据(目前只有一个占位符条目,事件数组将以这种格式植入多个示例)

events = [{location: "Emergency Shelter", latitude: "37.5434", longitude: "-77.4435"}]

空 arrays 声明和 API 调用正常运行:

let events = [];
let locations = [];

$.get("/api/events", data => {
 for (let i = 0; i < data.length; i++) {
   events.push(data[i]);
 }
});

console.table 正确显示 object 并包含具有正确对应值的键“latitude”和“longitude”

forEach 方法:

locations = events.forEach(location => {
  const coords = {};
  coords.latitude = location.latitude;
  coords.longitude = location.longitude;
  locations.push(coords);
});
console.log("Coordinates list: " + locations);

console.log 显示“坐标列表:未定义”

我觉得我可能在某个地方错过了回报,但我不确定在哪里。 我尝试添加

return locations;

在 forEach 方法中,但它不会改变任何东西(我相信这会在遍历整个数组之前退出我的 function)。 任何帮助表示赞赏!

forEach不返回任何内容,因此locations应该是undefined 您不应该将forEach的返回值传递给locations

events.forEach(location => {
  const coords = {};
  coords.latitude = location.latitude;
  coords.longitude = location.longitude;
  locations.push(coords);
});
console.log("Coordinates list: " + locations);

您也可以使用map function。

 const events = [ { location: 'Emergency Shelter', latitude: '37.5434', longitude: '-77.4435' } ]; const locations = events.map(({ latitude, longitude }) => ({ latitude, longitude })); console.log(locations);

尝试基于map的方法,该方法也会将您的代码压缩为...

 const events = [{ location: "Emergency Shelter", latitude: "37.5434", longitude: "-77.4435" }, { location: "Peopl's Kitchen", latitude: "36", longitude: "-78" }, { location: "Salvation Army", latitude: "38", longitude: "-76" }]; const locations = events.map(({ latitude, longitude }) => ({ latitude, longitude })); console.log("Coordinates list: ", locations); // do not concatenate the result. console.log("Coordinates list: " + locations); console.log("Coordinates list: " + JSON.stringify(locations));
 .as-console-wrapper { min-height: 100%;important: top; 0; }

map通过迭代另一个数组创建一个新数组,其中新数组的每一项等于映射/转换 function 的返回值,在每个迭代步骤中,它确实处理原始数组的当前值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM