vue里面怎么使用String字符串操作的includes

报错:

img


代码:

searchCourse:(data)=>{
            if (data.length !== 0) {
                for (let i = 0;i < data.length;i++) {
                    let titleState = data[i].videoTitle.includes(this.searchKey);
                    let conState = data[i].videoInfo.includes(this.searchKey);
                    if (titleState){
                        if (this.videoSearchResultArr.length !== 0) {
                            for (let v = 0;v < vm.videoSearchResultArr.length;v++) {
                                if (data[i].videoTitle !== vm.videoSearchResultArr[v].videoTitle && data[i].videoInfo !== vm.videoSearchResultArr[v].videoInfo) {
                                    vm.videoSearchResultArr.push(data[i]);
                                }
                            }
                        }else {
                            vm.videoSearchResultArr.push(data[i]);
                        }
                    }
                    if (conState) {
                        if (this.videoSearchResultArr.length !== 0) {
                            for (let v = 0;v < vm.videoSearchResultArr.length;v++) {
                                if (data[i].videoTitle !== vm.videoSearchResultArr[v].videoTitle && data[i].videoInfo !== vm.videoSearchResultArr[v].videoInfo) {
                                    vm.videoSearchResultArr.push(data[i]);
                                }
                            }
                        }else {
                            vm.videoSearchResultArr.push(data[i]);
                        }
                    }
                }
            }
        }

不知道为什么一直用不了这个关键字,原生js是没问题的,但一搭载vue框架就当机了

打印data数据然后控制台展开数据截张图看下,看includes是字符串的方法,属性拼写出错会导致获取不到数据为undefined会出错

searchCourse:(data)=>{
console.log(data)

你data[i]对象没有videoTitle或videoInfo属性吧
返回的是 undefined

你输出下data[i]看看是什么对象
console.log(data[i]);

那你 打印data[i] 看看 是不是 字符串和 数组 ,或者 必须有值才行 。要不然就会报错。

可以做个非空判断 。
其它用到的也判断一下

let titleState = data[i].videoTitle.includes(this.searchKey);

if(data[i].videoTitle){
 titleState = data[i].videoTitle.includes(this.searchKey);
}