javascript - 使用循环将多个数组组合成一个对象

标签 javascript arrays variables

我已经制作了一个对象原型(prototype),我想为其组合一组数组以在该对象下创建。

我尝试使用函数构造函数来创建对象原型(prototype),并将所需的属性作为参数。然后我用所有属性的数据创建了数组。我的问题是,当我创建循环时,我的第一个想法是创建一个变量并以与每个对象实例相关的项目(在本例中为足球运动员的名字)命名它,但动态变量命名是不可能的,所以我似乎无法在循环中创建多个变量/对象实例。

var Players = function(name, position, number, yearOfBirth) {
this.name = name;
this.position = position;
this.number = number;
this.yearOfBirth = yearOfBirth;
}

var playerNames = ['1','2',....'25'];
var playerPosition = [....];
var playerNumber = [....];
var playerYearOfBirth = [....];

for (var i = 0; i < playerNames.length; i++) {
    var playerNames[i] = new Object(playerNames[i], playerPosition[i], playerNumber[i], 
    playerYearOfBirth[i]);
}

所以这当然行不通,所以我也尝试了这个。

var player = [];
for (var i = 0; i < playerNames.length; i++) {
  var players = {}
  player.name = playerNames[i];
  player.position = playerPosition[i];
  player.number = playerNumber[i];
  player.yearOfBirth = playerYearOfBirth[i]
  player.push(players[i]);
}

但这仅将数据应用于最后一个对象。

所以我希望我的输出是用正确的数据填充所有对象,但我想知道我是否正在尝试创建一个不必要的解决方案。我以前没有玩过对象,所以我只是想绕过它,看看它是如何在教程之外应用的,当我实际上有它的用例时。

最佳答案

试试这个。数组和对象被相互代替使用,从而产生错误

var players = [];
playerNames=[1,2]
playerPosition=[1,2]
playerNumber=[1,2]
playerYearOfBirth=[1,2]

for (var i = 0; i < playerNames.length; i++) {
  var player = {}
  player.name = playerNames[i];
  player.position = playerPosition[i];
  player.number = playerNumber[i];
  player.yearOfBirth = playerYearOfBirth[i]
  players.push(player);
}
console.log(players)

关于javascript - 使用循环将多个数组组合成一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57955196/

相关文章:

javascript - 如何对具有多个属性的数组进行分组

javascript - 在 JavaScript 中旋转数组中的元素

ios - 使用随机生成的字符串查找数组字符串值的索引

variables - 使长变量在 64 位和 32 位 Excel VBA 中工作

javascript - 优化代码仅定义一次变量,代码仅在变量处于更改功能时才起作用,而对于更改之外的代码我重新定义?

javascript - 如何发出 NodeJS 请求并将其通过管道传递给另一个响应

javascript - 关闭的 javascript 问题

javascript - 将 coldfusion 查询结果作为 javascript 对象放入 javascript 数组(谷歌地图)

variables - SSIS 根据另一个变量的关闭日期将变量设置为下周一

javascript - 在 React 中重新渲染 moment.fromNow()