Javascript .indexOf()不是外部json数组的函数错误
我当前在.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
{
"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);
控制台日志(键);
控制台日志(索引);
日志(动物[键[索引])
动物
是一个对象而不是数组<代码>动物
将未定义