javascript - 由于某种原因,无法使用变量查找对象属性
问题描述
我知道这应该如何工作。如果我有一个变量 x="property" 和一个看起来像 y={property: "value"} 的对象,那么 y[x] 应该返回 "value"。到目前为止,这对我有用,但是我的代码中发生了某种奇怪的错误。这是我遇到问题的功能:
const { textToSpeech } = require("../text-to-speech/tts");
const data = require("../Data/Data").data;
const genericSendMessage = async (userMessage, assistant) => {
try{
let res = await assistant.message({
workspace_id: process.env.TTS_WORKSPACE,
input: {"text": userMessage}
})
res = await JSON.stringify(res["output"]["text"][0], null, 2)
res = generateResponse(res);
await textToSpeech(res);
return res;
}catch(err){
console.log("error in genericSendMessage:\n",err)
}
}
const generateResponse = (watsonCode) => {
console.log("========================\nwatsonCode: ",watsonCode,"\ndata: ",data,"\ndata[watsonCode]: ",data[watsonCode])
console.log(Object.values(data))
return data[watsonCode][Math.floor(Math.random()*data[watsonCode].length())]
}
module.exports = genericSendMessage;
如果您查看此 console.log:
console.log("========================\nwatsonCode: ",watsonCode,"\ndata: ",data,"\ndata[watsonCode]: ",data[watsonCode])
data 和 watsonCode 都得到了很好的安慰,它们应该是这样的。data 是一个对象,而 watsonCode 是一个与该对象的属性相对应的字符串,但是 data[watsonCode] 每次都是未定义的。如果我将数据设为数组并将 watsonCode 设为数字(索引),也会发生同样的事情。我不知道这怎么可能。同样的事情以前也有效,如果我将 watsonCode 硬编码为 console.log 上方的 Number("1"),它工作正常,但如果获取 watsonCode 并得到“1”,然后执行 data[Number(watsonCode)] 它是未定义的。我尝试在 generateResponse 函数中执行 typeof(watsonCode) 以查看它是否仍然是一个承诺,但不,它是一个字符串。
这是数组版本(缩短)的 console.log 的样子:
========================
watsonCode: "1"
data: [[...],[...],[...],...] //I removed the data here as it is somewhat sensitive but it's just a 2D array of strings
data[Number(watsonCode)]: undefined
error in genericSendMessage:
TypeError: Cannot read property 'length' of undefined
我的问题是这怎么可能,发生了什么以及如何修复它以便我可以正常引用对象属性?
解决方案
推荐阅读
- java - 如何正确继承类并构建我的程序?
- python - 我希望谈论爷爷的变量说他老了,但它说他不老。我做错了什么?
- java - java-如何正确添加时间?
- python-3.x - Python3 numpy数组大小与列表比较
- android - 在 Flutter 上 iOS 和 Android 的 bundle-Identifiers 可以不同吗?
- git - 如何将多个过去的提交压缩为一个
- python - 无法将 TLS 与 Couchbase Python SDK 3.0.x 一起使用
- xampp-vm - XAMPP VM 没有响应 OSX big sur beta 3
- ruby - 有没有办法将两个分页博客放到一个 Jekyll 站点中,托管在一个 GitHub Pages 存储库中?
- opengl - OpenTK,将向量数组传递给着色器