如何解决反应:在状态中访问数组时未定义
当我console.log(this.state.animal_names)
退出我的状态元素时
>(2) [Array(2),Array(2)]
当我扩展它时,我得到
0: (2) ["dogNames",Array(53)]
1: (2) ["catNames",Array(100)]
但是,当我尝试访问它们时,就像这样:
desiredAnimal = "dogNames";
this.state.animal_names[desiredAnimal];
我明白了:
未定义
如何访问这些以便我可以遍历每个类别中的数组?
解决方法
使用 Array
将 Object
转换为 Object.fromEntries
const an = Object.fromEntries(this.state.animal_names);
desiredAnimal = "dogNames";
an[desiredAnimal];
,
您可以使用 reduce()
将数组转换为对象。
const animal_names = [ ["dog",[1,2,3,4]],["cat",3]]];
const res = animal_names.reduce((acc,cur) => {
const name = cur[0];
acc[name] = cur[1];
return acc;
},{});
console.log(res.dog);
console.log(res.cat);
你的状态是这样的吗?这可能会更好。
example.com/buiness_name=FOO&item_id=BAR
如果您将所有狗名作为 dogNames 属性的值存储在一个animalNames 对象中,则访问所有狗名可能会更容易。
,也许这会解决您的问题
id == 100
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。