Array.find 不是函数错误

Array.find is not a function error

我在名为 myStation 的变量中存储了一个值。现在我想在另一个名为 station.js 的文件中的数组中找到该值。当我找到匹配项时,我想获取 stationID。我使用的代码 let stationNewName = Stations.find((s) => s.stationName === myStation); 导致了错误 "Error handled: Stations.find is not a function"。我错过了什么?

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

需要 station.js 文件

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

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

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

下一行产生错误:"Error handled: Stations.find is not a function"。

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

这是我在 stations.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"},
    ],
};

使用 find 方法后,如果传递的谓词为真,将 return 数组的元素,您需要引用成员 stationId,因为 STATIONS 数组中的每个元素都是一个对象。

'use strict';

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

// Import the default export from the stations.js module which is the object containing the STATIONS array.
const Stations = require("./stations.js");

const myStation = 'STATION_NAME';

// Find the first element within STATIONS with the matching stationName
const station = Stations.STATIONS.find((s) => s.stationName === myStation);

// As find will return the found element which is an object you need to reference the stationID member.
const stationId = station.stationID;

您的导出包含一个对象,其中一个 属性 包含一个数组。因此,您需要引用对象的那个 属性 才能到达您认为正在引用的数组

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