我的功能可以在普通状态下工作,但不能在某种状态下反应。 我的状态是一个json对象数组。 我有一个来自对象属性的值,我想要来自数组的索引值。
var result = Object.keys(this.state.categories).find(key => {
var tableau=this.state.categories[key].catID;
if(tableau === val)
return key;
});
return result;
}
我期望一个整数,但是没有任何错误消息。
答案 0 :(得分:0)
我希望有一个整数...
两个问题:
您的代码对find
的结果使用Object.keys
,所以发现的将是字符串,而不是整数(或数字),因为Object.keys
返回一个数组调用它的对象的字符串名称属性。 (对象可以使用字符串或符号作为属性名称,但是Object.keys
会忽略符号命名的属性。)
您应返回key
,但应返回true或false。 find
回调的返回值告诉find
是返回被访问的条目,还是继续循环查找要返回的项目。
如果this.state.categories
是一个数组,则您希望findIndex
不包含Object.keys
:
var result = this.state.categories.findIndex(
entry => entry.catID === val
);
结果将是entry.catID === val
为真的第一个条目的索引。
如果您想要该catID
的对象而不是索引的对象,则可以使用find
,而不是在Object.keys
上使用:
var result = this.state.categories.find(
entry => entry.catID === val
);
result
将是第entry.catID === val
个正确的条目。