对农民"print animals"最实用的解决方案是什么?



打印动物的最佳方式是什么,同时确保未来的动物可以在不更改代码的情况下列出?我的试训很业余。。。

var animals = ["Cows", "Chickens", "Pigs", "Horses"];
var printFarm = function(a, b, c, d){
console.log("You have " + a + " " + animals[0]);
console.log("You have " + b + " " + animals[1]);
console.log("You have " + c + " " + animals[2]);
console.log("You have " + d + " " + animals[3]);
};
printFarm(3, 6, 17, 54);

为什么不向函数传递一个整数数组,然后用animals数组或整数数组中的最小项数进行循环?

 var animals = ["Cows", "Chickens", "Pigs", "Horses"];
 var printFarm = function(animalCounts) {
      var index = Math.min(animals.length, animalCounts.length);
      for (var i = 0; i < index; i++) {
           console.log("You have " + animalCounts[i] + " " + animals[i];
      }
 }
 printFarm([1,2,3,4]);

更好的方法是创建一个Animal类,并为所需的每只动物创建一个对象。这是一个粗略的例子,但表明了这个想法。

function Animal(type, count) {
  this.type = type;
  this.count = count;
  this.print = function() {
    console.log("You have " + this.count + " " + this.type);
  }
}

也许一个更好的方法是一个Animal基类,每个新的动物类型都添加了它的子类,但这确实奏效了。

https://jsfiddle.net/f9n0en7e/

这里有两种方法…

var animals = ["Cows", "Chickens", "Pigs", "Horses"];
function printFarm(arrAnimals) {
    for (var i = 0; i < arrAnimals.length; i++) {
        var animalGroup = arrAnimals[i];
        var amount = printFarm.arguments[i + 1];
        if (amount) {
            console.log('You have ' + amount + ' ' + animalGroup + '.');
        } else {
            console.log('No amount was found for ' + animalGroup + '.');
        }
    }
}
printFarm(animals, 3, 6, 17, 54);

因此,您所需要做的就是更改数组以包含一个新的动物,然后简单地将数量附加到printFarm函数调用的末尾,就像我上面所做的那样。或者,除了动物数组之外,您还可以将动物计数数组传递给函数。

或者传递一组animalCount对象,这些对象具有动物的名称和作为对象一部分的计数。就像这样…

var animals = [{ name:'cows', count:3 },
               { name:'chickens', count:6 },
               { name:'pigs', count:17 },
               { name:'horses', count:54 }];
function printFarm(arrAnimals) {
    for (var i = 0; i < arrAnimals.length; i++) {
        var animalGroup = arrAnimals[i];
        var name = animalGroup.name;
        var amount = animalGroup.count;
        console.log('You have ' + amount + ' ' + name + '.');
    }
}
printFarm(animals);

最新更新