function generateRandomAnimals(num){
var arr = [];
for(var i = 0; i < num; i++){
arr.push(randomAnimal());
}
return arr;
}
function generateRandomAnimalsNames(num){
var arr = [];
for(var i = 0; i < num; i++){
arr.push(randomAnimal());
}
return arr;
}
function randomAnimal(){
var rand = Math.floor(Math.random()*animals.length);
var animal = animals[rand];
var animalName = animalNames[rand];
return animal;
return animalName;
}
我想将动物返回到generateRandomAnimals数组,并将animalName返回到generateRandomAnimalsNames数组。但由于我们无法从一个函数返回两个值,我们如何返回它们并分别使用它们来推送上面给出的不同数组? 注意:animals和animalNames是使用多个元素创建的不同数组。
答案 0 :(得分:1)
这个答案可能会有所帮助,也可能没有帮助,具体取决于您的其余代码和最终目标。它假定generateRandomAnimals
和generateRandomAnimalsNames
的返回值是独立的。
从您发布的内容来看,稍微好一点的代码设计就是从数组中选择一个通用的#34;随机元素&#34;函数并让generateRandomAnimals
和generateRandomAnimalsNames
传递所需的数组。然后就不需要&#34;返回多个值&#34;。
function generateRandomAnimals(num){
var arr = [];
for(var i = 0; i < num; i++){
arr.push(randomElement(animalNames));
}
return arr;
}
function generateRandomAnimalsNames(num){
var arr = [];
for(var i = 0; i < num; i++){
arr.push(randomElement(animals));
}
return arr;
}
function randomElement(array){
var rand = Math.floor(Math.random()*array.length);
return array[rand];
}
另一个解决方案是将动物及其名称存储在一个阵列中。
答案 1 :(得分:1)
您只能使用一个return
语句,为true。但是,如果你想返回多个值,你可以只使用一个对象(非常类似于像PHP这样的语言中的关联数组):
var animal = animals[rand];
var animalName = animalNames[rand];
return {
"animal": animal,
"animalName": animalName
};
然后,您可以使用以下语法从对象中抓取每个项目:obj["property_name"]
。
但是,由于您没有在每个函数(generateRandomAnimals
和generateRandomAnimalsNames
)中使用这两个值,我相信如果您的代码看起来像这样(考虑到您的代码)会更好,更漂亮animals
和animalNames
变量看起来像我认为的样子:
var animals = [{"name": "Dog"}, {"name": "Cat"}, {"name": "Cow"}];
var animalNames = ["Dog", "Cat", "Cow"];
function generateRandomAnimals(num){
var arr = [];
for(var i = 0; i < num; i++){
arr.push(randomAnimal());
}
return arr;
}
function randomAnimal() {
var rand = Math.floor(Math.random()*animals.length);
var animal = animals[rand];
return animal;
}
function generateRandomAnimalsNames(num){
var arr = [];
for(var i = 0; i < num; i++){
arr.push(randomAnimalName());
}
return arr;
}
function randomAnimalName(){
var rand = Math.floor(Math.random()*animals.length);
var animalName = animalNames[rand];
return animalName;
}
var random_animals = generateRandomAnimals(5);
var random_animal_names = generateRandomAnimalsNames(5);
答案 2 :(得分:0)
函数可以返回一个对象,如数组或普通对象:
function generateRandomAnimals(num){
var arr = [];
for(var i = 0; i < num; i++){
arr.push(randomAnimal().animal); // get property of interest
}
return arr;
}
function generateRandomAnimalsNames(num){
var arr = [];
for(var i = 0; i < num; i++){
arr.push(randomAnimal().animalName); // get property of interest
}
return arr;
}
function randomAnimal(){
var rand = Math.floor(Math.random()*animals.length);
var animal = animals[rand];
var animalName = animalNames[rand];
return { animal, animalName }; // return object with 2 properties (ES6 short notation)
}
虽然这可能会回答你的问题,但我认为你将属于一起的东西分成两个独立的数组,其中只有一个数组中的索引决定了在哪里找到与之相关的另一个值。
更好的做法是使用对象,在这种情况下有两个属性,比如修改后的randomAnimal
函数返回的属性。您可以在一个数组上将这些对象整体推送到:
function generateRandomAnimals(num){
var arr = [];
for(var i = 0; i < num; i++){
arr.push(randomAnimal()); // now you have both properties
}
return arr;
}
function randomAnimal(){
var rand = Math.floor(Math.random()*animals.length);
var animal = animals[rand];
var animalName = animalNames[rand];
return { animal, animalName }; // return object with 2 properties (ES6 short notation)
}
然后你可以访问这样的动物:
var arr = generateRandomAnimals(10);
console.log(arr[0].animal, arr[0].animalName);