求助排查TypeError: isInteger is not a function错误成因
问题分析与解决
错误根源
你遇到的TypeError: isInteger is not a function是因为**isInteger是Number的静态方法,不能直接在数值实例上调用**。你代码里的number[key].isInteger()写法错误,正确的调用方式是Number.isInteger(目标数值)。
另外你的代码还有两处语法错误:
selectableFields里的第二个numberColumn调用,字符串参数'Time logged, false)引号未闭合,应该是'Time logged'selectableFields返回的数组里错误地把两个方法调用包在了一个对象里,数组元素应该直接是两个方法调用的结果,无需外层对象。
修正后的代码
修复numberColumn方法
numberColumn(key, label, formatted) { // 改用Number.isInteger静态方法判断 const digits = formatted && this.numbers.every(number => Number.isInteger(number[key])) ? '0' : '2'; return Object.assign(this.normalColumn(key, label), { template: { type: 'number', format: { minimumFractionDigits: digits, maximumFractionDigits: digits }, foot: sum } }); },
修复selectableFields计算属性
selectableFields() { return [ this.numberColumn('numOfUsers', 'Number of users', true), this.numberColumn('timeLogged', 'Time logged', false) ]; },
额外注意事项
- 确保
this.numbers中的每个number[key]都是数值类型,如果是字符串格式的数字,需要先转换:Number.isInteger(Number(number[key])) - 确认
sum变量已在当前作用域中定义,避免后续出现未定义错误
内容的提问来源于stack exchange,提问作者Cphml444
相关产品推荐
相关产品推荐

