Javascript .indexOf()不是外部json数组的函数错误

Javascript .indexOf()不是外部json数组的函数错误,javascript,arrays,json,Javascript,Arrays,Json,我当前在.json文件中拥有的内容: { "cat": { "gender": "male" }, "dog": { "gender": "female" } } 我尝试使用的是: const animals = require('../../data/animals.json'); var Animal = animals[Math.floor(Math.random() * animals.length)]; // Lets say it returns

我当前在.json文件中拥有的内容:

{
  "cat": {
    "gender": "male"
  },
  "dog": {
    "gender": "female"
  }
}
我尝试使用的是:

const animals = require('../../data/animals.json');

var Animal = animals[Math.floor(Math.random() * animals.length)]; // Lets say it returns dog //

var index = animals.indexOf(Animal); // Tries to get the index number of the dog

console.log(index); // Expected Output: "1"
然而,它返回:

indexOf不是一个函数


我该如何解决这个问题?谢谢~

在JavaScript中,下标操作符
[]
同时作用于对象和数组。第2行将导致
动物
未定义。由于
animals
是一个对象,因此它将不具有数组的成员函数。您可以使用
Object.values(animals)
生成
animals

中所有值的数组。您需要先获取键,然后获取随机索引

var-animals={cat:{性别:“雄性”},dog:{性别:“雌性”},
键=对象。键(动物),
index=Math.floor(Math.random()*keys.length);
控制台日志(键);
控制台日志(索引);

日志(动物[键[索引])
动物
是一个对象而不是数组<代码>动物
未定义