原因:
使用不属于当前类型的内置方法时,就会提示XXX is not a function
举例:
indexOf()是String字符串类型的方法,不能作用于object,Number等类型,但是能作用于Array类型。
比如说:
let a ={
aa:1,
bb:2
},
let b = ['aa','bb','cc']
let c = "aabbcc"
let d = 100
a是对象类型,b是数组类型,c是字符串类型,d是数值类型
a.indexOf("aa") // 打印得到 a.indexOf is not a function
b.indexOf("aa") // 打印得到 0
c.indexOf("aa") // 打印得到 0
d.indexOf("aa") // 打印得到 d.indexOf is not a function
也就是说:你对当前变量使用了不是它类型的方法,该方法对它而言就是’is not a function’
indexOf()是String字符串类型的方法,不能作用于object,Number等类型,但是能作用于Array类型。
虽然数组能使用一些字符串的方法,但是不推荐并Array类型使用indexOf()判断元素在当前数组的位置,推荐使用 findIndex()方法。
——————————原文分割线————————————
关于Error in callback for watcher “data”: "TypeError: data.indexOf is not a function"的错误说明
在我项目中的原因:表格显示需要数组包含对象的形式,每个对象是一行数据,拿到的数据格式不对。即我要的是数组,后台给我的是对象。
错误例子:
从后台获取数据res.data,显示在表格中。
只有一条数据,六个内容,应该是一行六列,但是出现了六行六列,且都为空。
报三个错,如下:
经过打印res.data之后才知道,后台返回的res.data是一个对象,而表格需要的是数组
进行遍历转数组,得到了一个数组包含六个对象,表格显示还是六行六列,但是每一行都有一列数据有值,相当于分开的把六条数据显示在了六行。
说明不应该遍历转数组,直接在空数组push这个对象即可。即tableData.push(res.data);
这样就成功显示数据了。