2017-09-05 321 views
-2

也许这是之前提出的问题,我不知道如何查找它,所以我预先申请了我完全缺乏的措辞技巧。所以,在这里。我在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点的阵列,含有所述键和一个值之一,但我不想法如何为每个对象多次重复第一个数组。

+0

你到目前为止试过了什么? –

+0

1/2我不同意以复制品为由,关闭此Q.既没有提供的链接[循环创建在二维数组中的对象的键和值](https://stackoverflow.com/questions/17353505/looping-to-create-object-keys-and-values-in-javascript-from -2d数组),也没有后续重复的链接[通过Javascript对复杂的JSON对象进行交互的最简单方法](https://stackoverflow.com/questions/17192051/easiest-way-to-interate-over-a-complex -json-object-via-javascript)提供/讨论'Array.prototype.reduce'方法,它比传统循环有许多优点。 –

+0

2/2我真的很感激,如果我可以在这里提供完全这样的解决方案,因为我努力回答OP的问题,在按下“提交答案”按钮之前几秒钟,通过将此Q设置为“重复” 。 –

回答

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);

这工作正是你想要达到的目标。

+0

这几乎与链接副本中的代码完全相同。 – George

+0

@George,但我不知道,因为我正在创建此代码段,并立即发布,而无需看评论 –

+0

仅有代码的答案没有那么有用。你应该解释为什么OP有他们的问题(当不提供任何代码时很难)以及你的代码如何处理它。 – RobG