以下函数返回对象的索引:
selectedAppIndex: function () {
console.log(this.activeApps)
console.log(this.selectedApp)
return this.activeApps.findIndex(this.selectedApp)
}
console.log(this.activeApps)
记录数组:
console.log(this.selectedApp)
记录对象:
正如您所见,数组中的对象和this.selectedApp
中的对象是相同的。因此该函数应输出0
。
但是我收到了这个错误:
Uncaught TypeError: #<Object> is not a function
(我正在使用Chrome 49.而findIndex()
来自Chrome 45的supported。)
答案 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
。正如您在上面的函数中看到的那样,您必须返回匹配的情况,因为每次每个元素都会执行作为参数传递的findIndex
,直到评估为{{1}如果某个元素求值为function
将返回该索引,如果true
中的非元素求值为true将返回true
答案 1 :(得分:1)
如果要获取数组中值的索引,请使用indexOf
:
return this.activeApps.indexOf(this.selectedApp)