我有一个值存储在名为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);
这是我在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"},
],
};
答案 0 :(得分:2)
您的导出包含一个对象,该对象的一个属性包含一个数组。因此,您需要引用该对象的一个属性,以获取您认为要引用的数组
let stationNewName = Stations.STATIONS.find((s) => s.stationName === myStation);
答案 1 :(得分:0)
使用find方法(如果传递的谓词为true时将返回数组的元素)后,您需要引用成员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;