首先,我不是前端开发人员,并且我对JavaScript不太了解,所以请耐心等待,我将不胜感激,但我需要解决此“典型”错误,但我在Google中找不到stackoverflow的解决方法,可以说在代码中以某种方式起作用,但是在当前解决方案之前是这样的:
在正确的地方,但不是说“漂亮”,所以我正在尝试重构此代码以使其更简洁,更简单
if (
Object.values(this.searchParams.data)[0] === 'price_desc' ||
Object.values(this.searchParams.data)[0] === 'price_asc'
) {
// Do nothing
} else if (!this.searchParams.data.price) {
this.getProducts();
}
与此:
考虑到它是{sortBy: "price_asc"}
或{sortBy: "price_desc"}
之类的对象
它在终端中显示:
但是我们在无法使用this.searchSortBy.includes()
的地方使用ES5,因为它无法正常工作
这是我的代码:
var SponsoredProducts = (function() {
function SponsoredProducts(
this.searchParams = window.getSearch();
this.searchSortBy = Object.values(this.searchParams.data)[0];
console.log(this.searchParams.data.sortBy);
console.log('-----------------------');
console.log(this.searchSortBy);
console.log('-----------1-----------');
console.log(typeof this.searchSortBy.indexOf('price') === undefined);
console.log('-----------2-----------');
console.log(this.searchSortBy.indexOf('price') === "undefined");
console.log('-----------3-----------');
console.log(typeof this.searchSortBy.indexOf('price') ==
if (!this.searchParams.data.price && String(this.searchSortBy).indexOf('price') == "-1") {
this.getProducts();
}
}
但是我经常遇到这样的问题:错误是:未捕获的TypeError:无法读取未定义的属性'indexOf'
因此有适当的解决方案吗?如果有人可以帮助我,我将非常感激。
答案 0 :(得分:1)
找到了解决方案:
之所以不起作用,是因为我没有定义该值何时为空/未定义,所以我添加了|| ''
来创建某些内容,甚至是空的,因此indexOf
可以检查某些内容返回-1
this.searchSortBy = this.searchParams.data.sortBy || '';
if (
!this.searchParams.data.price &&
this.searchSortBy.indexOf('price') < 0
) {
this.getProducts();
}