【问题标题】:Make array of objects from one array (keys) the other array of arrays (values) [duplicate]从一个数组(键)创建另一个数组数组(值)的对象数组[重复]
【发布时间】:2018-02-13 13:20:47
【问题描述】:

也许这是以前问过的,我不知道如何寻找它,所以我提前申请了我完全缺乏措辞技巧。所以,就这样吧。我正在用 ECMA5 编程(所以没有可用的花哨的数组/对象方法)。我有一个数组,其中包含键,可以说:

var keys = ["name", "age", "school"];

然后,包含值的数组数组:

var values = [["John John", 16, "Saints Hills High School"], ["Miranda Knobs", 12, "St Mary Junior High"], ["Patricia Lee", 13, "Milwakee High School"]];

我想创建一个对象数组。每个对象都有来自第一个数组的键和来自第二个数组的值,如下所示:

var result = [{name: "John John", age: 16, school: "Saints Hills High School"}, {name: "Miranda Knobs", age: 12, school: "St Mary Junior High"}, {name: "Patricia Lee", age: 13, school: "Milwakee High School"}];

我看到了一些带有 2 个数组的问题/解决方案,一个包含键,一个包含值,但我不知道如何为每个对象重复第一个数组多次。

【问题讨论】:

标签: javascript arrays javascript-objects


【解决方案1】:

您可以使用此代码:

var keys = ["name", "age", "school"];
var values = [["John John", 16, "Saints Hills High School"], ["Miranda Knobs", 12, "St Mary Junior High"], ["Patricia Lee", 13, "Milwakee High School"]];
var resultArray = [];
for(var i=0; i<values.length; i++){
  var obj = {};
  for(var j=0; j<keys.length; j++){
     obj[keys[j]] = values[i][j];
  }
   resultArray.push(obj);
}

console.log(resultArray);

这正是您想要达到的效果。

【讨论】:

  • 这与链接副本中的代码几乎完全相同。
  • @George 但我不知道,因为我正在创建此代码 sn-p 并立即发布而无需查看 cmets
  • 纯代码答案没有那么有用。您应该解释为什么 OP 有问题(当不提供任何代码时很困难)以及您的代码如何解决它。
  • @AKA,感谢您的解决方案。我厌倦了与您的答案非常相似的东西,但没有添加符号 obj[...] 而是像 array.push({keys[j] = values[i][j]}) 之类的东西,当然什么也没发生。跨度>
  • 很高兴帮助你@IuliaMihet
猜你喜欢
  • 2019-01-01
  • 2021-03-30
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 2015-08-28
  • 2018-03-10
相关资源
最近更新 更多