我是js开发的大三学生所以这可能是一个愚蠢的问题,所以道歉。
我在我的应用程序中使用firebase来存储我的字符串,我在应用程序加载时调用它一次并将其保存在内存中以便更快地访问。
然后我使用strings.find在数组中查找特定的字符串。所有工作在iOS上运行时都会找到,但在Android上运行时我会遇到这个奇怪的错误
TypeError: Undefined is not a function (evaluting 'this.strings.find...
这是我的数据架构
{'strings': [{'name':'something', 'value':'something'} ... ]
这是我的代码
getString(name) {
return this.strings.find(x => x.name == name).value
}
这就是我定义对象的地方
init(onUpdated) {
Promise.all([stringsDb.once('value'), multiLang.once('value')])
.then(([stringsSnapshot, multiLangSnapshot]) => {
this.strings = stringsSnapshot.value
this.multiLang = multiLangSnapshot.value
onUpdated(true)
})
.catch((err) => {
console.log(err.stack)
onUpdated(false)
});
}
答案 0 :(得分:2)
这可能是因为this.strings
不是数组。你需要调试它并查看它实际上是否是一个数组,我的猜测是它返回一个对象,如果是这样,那么你需要使用reducer或者Object.values
或者其他东西来转换为数组。
p.s在比较字符串时应该使用===
运算符