未捕获的TypeError:#<object>不是函数

时间:2016-04-10 05:19:54

标签: javascript

以下函数返回对象的索引:

selectedAppIndex: function () {
  console.log(this.activeApps)
  console.log(this.selectedApp)
  return this.activeApps.findIndex(this.selectedApp)
}

console.log(this.activeApps)记录数组:

enter image description here

console.log(this.selectedApp)记录对象:

enter image description here

正如您所见,数组中的对象和this.selectedApp中的对象是相同的。因此该函数应输出0

但是我收到了这个错误:

Uncaught TypeError: #<Object> is not a function

(我正在使用Chrome 49.而findIndex()来自Chrome 45的supported。)

2 个答案:

答案 0 :(得分:7)

您的问题归因于findIndex期望function作为参数而不是object

在此function内,您可以定义条件,以便找到第一个匹配的第一个index

例如,如果您要查找数字12的索引:

 function  search12(el){
      return el === 12;
 }

 [4, 6, 8, 12].findIndex(search12);

上面的例子将返回数字3,因为12位于索引3上。

传递给function的{​​{1}}内部有3个可用于测试的参数。

  • findIndex,是原始数组中正在处理的当前元素。
  • element,正在处理的当前元素的索引,或者当测试评估为index时的结果。
  • true调用了原始数组array

More info

正如您在上面的函数中看到的那样,您必须返回匹配的情况,因为每次每个元素都会执行作为参数传递的findIndex,直到评估为{{1}如果某个元素求值为function将返回该索引,如果true中的非元素求值为true将返回true

答案 1 :(得分:1)

如果要获取数组中值的索引,请使用indexOf

return this.activeApps.indexOf(this.selectedApp)