【问题标题】:Javascript array, building from a set of variablesJavascript 数组,由一组变量构建
【发布时间】:2020-09-20 03:44:31
【问题描述】:

以下变量是通过Car原型定义的:

var Car = function(maker, type, model) {
  this.maker = maker;
  this.type = type;
  this.model = model;
}

var golf = new Car('VW', 'Hatchback', 'Golf');
var sentra = new Car('Nissan', 'Sedan', 'Sentra');
var _328i = new Car('BMW', 'Convertible', "328i");
var gallardo = new Car('Lamborghini', 'Convertible', "Gallardo");
var corniche = new Car('Rolls Royce', 'Sedan', "Corniche");

Car.prototype.year = 0;

golf.year = 2015;
sentra.year = 2010;
_328i.year = 2019;
gallardo.year = 2020;
corniche.year = 1998;  

如何为属性 maker 构建一个 var 值数组

可能会像这样控制台日志:

(5) ['VW'、'Nissan'、'BMW'、'Lamborghini'、'Roll Royce']

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    您可以创建汽车实例数组并使用map 函数

    console.log(
      [golf, sentra, _328i, gallardo, corniche].map((car) => car.maker)
    )
    

    【讨论】:

    • 感谢您的回复。正如另一位评论员所说,“对此有很多解决方案。”你的很有趣。我在想可以找到变量; Golf、sentra 等引用汽车原型,然后是属性“制造商”。您似乎手动输入了 var 名称。如果有一百个,这可能会很麻烦。有什么想法吗?谢谢
    • 拉斐尔想到了我的想法。 // 这里的解决方案 const makersList = Array.from([golf, sentra, _328i, Gallardo, Corniche], car => car.maker ); // 应该打印一个制造商字符串名称的数组 console.log(makersList);
    【解决方案2】:

    对此有很多解决方案。首先,您需要为所有汽车创建一个数组,然后使用一种方法对每辆汽车进行迭代以获取汽车制造商。

    这里有两个例子:

    var Car = function (maker, type, model) {
      this.maker = maker;
      this.type = type;
      this.model = model;
    }
    
    Car.prototype.year = 0;
    
    var golf = new Car ('VW', 'Hatchback', 'Golf');
    var sentra = new Car ('Nissan', 'Sedan', 'Sentra');
    var _328i = new Car ('BMW', 'Convertible', "328i");
    var gallardo = new Car ('Lamborghini', 'Convertible', "Gallardo", 2020);
    var corniche = new Car('Rolls Royce', 'Sedan', "Corniche");
    
    golf.year = 2015;
    sentra.year = 2010;
    _328i.year = 2019;
    gallardo.year = 2020;
    corniche.year = 1998;
    
    var cars = [golf, sentra, _328i, gallardo, corniche]
    var carsMakers = []
    
    for(var i = 0; i < cars.length; i++) {
      var c = cars[i]
      carsMakers.push(c.maker)
    }
    console.log(carsMakers)
    
    var carsMakers2 = cars.map(function(c) { return c.maker });
    console.log(carsMakers2)

    【讨论】:

      【解决方案3】:

      就像map 方法,但使用Array.prototype.from

      
      var Car = function (maker, type, model) {
      this.maker = maker;
      this.type = type;
      this.model = model;
      }
      var golf = new Car ('VW', 'Hatchback', 'Golf');
      var sentra = new Car ('Nissan', 'Sedan', 'Sentra');
      var _328i = new Car ('BMW', 'Convertible', "328i");
      var gallardo = new Car ('Lamborghini', 'Convertible', "Gallardo");
      var corniche = new Car('Rolls Royce', 'Sedan', "Corniche");
      
      Car.prototype.year = 0;
      
      golf.year = 2015;
      sentra.year = 2010;
      _328i.year = 2019;
      gallardo.year = 2020;
      corniche.year = 1998;
      
      // Solution here
      const makersList = Array.from([golf, sentra, _328i, gallardo, corniche], car => car.maker );
      
      // should print an array of makers string names
      console.log(makersList);
      

      【讨论】:

      • 如何创建一个数组并使用Array.from(),它的map函数比直接在数组上使用map函数更高效? Array.from() 在这里是多余的
      • 只是做同样事情的另一种方式。将修复性能指控。是否多余取决于询问的人:)
      • 谢谢拉斐尔。没错。
      • 完全正确,呃,也许不是。我以为您提取了 var 名称,但实际上您输入了它们(?)。你能不能通过 Car 原型参考来提取 var 名称(术语可能是错误的)。谢谢
      • 那么这就是你要找的东西:stackoverflow.com/questions/19526456/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 2013-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-23
      相关资源
      最近更新 更多