开发者问题收集

使用 Javascript 将一维数组转换为对象数组

2021-02-26
270

我已将数组展平如下: let playerPool = [...new Set(array.flat(1))];
其输出如下: ["Howard Bell", "Matt Blair", "Dave Custer"]

我如何将其转换为对象数组?我想更新上面的内容,使其格式如下: [ {Name: "Howard Bell", Count: "0"}, {Name: "Matt Blair", Count: "0"}, {Name: "Dave Custer", Count: "0"} ]

我试图通过循环遍历 playerPool 数组来进行设置,但出现以下错误:TypeError: 无法设置未定义的属性“Name”

let playerPool = [...new Set(array.flat(1))];
let playerObjects = [];

for(let i = 0; i < playerPool.length; i++) {
  playerObjects[i].Name = playerPool[i];
  playerObjects[i].Count = 0;
}

我的目标是能够像这样 playerObjects[0].Count 单独引用每个属性,以便我以后可以更新计数值。

2个回答

您忘记创建要分配属性的对象。

但您可以使用 map 以更具功能性的方式完成此操作:

let playerPool = ["Howard Bell", "Matt Blair", "Dave Custer"];

let result = playerPool.map(name => ({name, count:0}));

console.log(result);

注意:如果可能,请选择 camelCase 作为属性名称。通常的做法是将 PascalCase 保留为构造函数名称(“类”)。

trincot
2021-02-26

您可以尝试这样的操作,

let array1 = ["Howard Bell", "Matt Blair", "Dave Custer"];
let array2 = [];

array1.forEach(el => {
  array2.push({Name: el, count: 0});
});

console.log(array2);
Santa
2021-02-26