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);
我在名为 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);