javascript - Array.find 不是函数错误

标签 javascript alexa-skills-kit

我有一个值存储在名为 myStation 的变量中。现在我想在另一个名为 station.js 的文件中的数组中找到该值。当我找到匹配项时,我想获取 stationID。我使用的代码 let stationNewName = Stations.find((s) => s.stationName === myStation); 导致错误“已处理错误:Stations.find 不是函数” 。我缺少什么?

我希望不必加载 Lodash 库的开销,并且认为我应该能够使用基本的 javascript 代码来完成。以下是我的代码中与错误相关的摘录:

需要 station.js 文件

const Stations = require("./stations.js");

这是导致错误的代码的摘录。 下一行在我的一个处理程序中执行,其中 myStation 正在接收值“CBS”

const myStation = handlerInput.requestEnvelope.request.intent.slots.stationName.value;

下一行产生错误:“错误处理:Stations.find 不是函数”。

let stationNewName = Stations.find((s) => s.stationName === myStation);

这是我在 station.js 文件中的数组的摘录

STATIONS: [          
          {stationName: "CBS", stationID: "8532885"},
          {stationName: "NBC", stationID: "8533935"},
          {stationName: "ABC", stationID: "8534048"},
    ],  

更新了数组以包含完整模块

'use strict';

module.exports = {

STATIONS: [          
          {stationName: "CBS", stationID: "8532885"},
          {stationName: "NBC", stationID: "8533935"},
          {stationName: "ABC", stationID: "8534048"},
    ],
};

最佳答案

您的导出包含一个对象,该对象的一个​​属性包含一个数组。因此,您需要引用该对象的一个​​属性才能访问您认为正在引用的数组

let stationNewName = Stations.STATIONS.find((s) => s.stationName === myStation);

关于javascript - Array.find 不是函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50973082/

相关文章:

javascript - 如何在页面加载时从表加载一定数量的行,并且仅在用户加载它们时才加载更多行?

javascript - 在 JavaScript 中获取 CSS 类名

javascript - AJAX:使用 jQuery 的 .ajax() 而不是 XMLHttpRequest 的优势?

node.js - Lambda 函数未返回对 Alexa 技能的响应

alexa - 找不到我未发布的 Alexa 技能套件

javascript - 跨浏览器 JS/jQuery 将当前 URL 复制到剪贴板

javascript - 来自javascript的全屏

javascript - 如何提取/下载JS播放的音频?

amazon-web-services - 如何在没有 AWS 的情况下在私有(private)网络中运行 Amazon Echo

node.js - 如何以编程方式将 AWS lambda 触发器设置为 Alexa Skills