如何在知道一个属性值的情况下获得嵌套的json对象数组状态的索引?

时间:2019-05-26 08:55:53

标签: javascript json reactjs state

我的功能可以在普通状态下工作,但不能在某种状态下反应。 我的状态是一个json对象数组。 我有一个来自对象属性的值,我想要来自数组的索引值。

    var result = Object.keys(this.state.categories).find(key => {
      var tableau=this.state.categories[key].catID;
        if(tableau === val)
            return key;
    });
    return result;
}

我期望一个整数,但是没有任何错误消息。

1 个答案:

答案 0 :(得分:0)

  

我希望有一个整数...

两个问题:

  1. 您的代码对find的结果使用Object.keys,所以发现的将是字符串,而不是整数(或数字),因为Object.keys返回一个数组调用它的对象的字符串名称属性。 (对象可以使用字符串或符号作为属性名称,但是Object.keys会忽略符号命名的属性。)

  2. 您应返回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个正确的条目。