关于Error in callback for watcher “data“: “TypeError: data.indexOf is not a function“的错误

本文解析了data.indexOfisnotafunction错误的原因,介绍了正确处理不同类型数据的方法,特别是如何正确地将对象转换为数组以用于表格展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因:
使用不属于当前类型的内置方法时,就会提示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,显示在表格中。

只有一条数据,六个内容,应该是一行六列,但是出现了六行六列,且都为空。
报三个错,如下:

错误1
错误2错误3

经过打印res.data之后才知道,后台返回的res.data是一个对象,而表格需要的是数组

进行遍历转数组,得到了一个数组包含六个对象,表格显示还是六行六列,但是每一行都有一列数据有值,相当于分开的把六条数据显示在了六行。

说明不应该遍历转数组,直接在空数组push这个对象即可。即tableData.push(res.data);
这样就成功显示数据了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值