微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

反应:在状态中访问数组时未定义

如何解决反应:在状态中访问数组时未定义

当我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];

我明白了:

未定义

如何访问这些以便我可以遍历每个类别中的数组?

解决方法

使用 ArrayObject 转换为 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 举报,一经查实,本站将立刻删除。