Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将javascript中的数组组合成一个哈希数组,其中一个数组是所有的键,其余的是值_Javascript_Underscore.js - Fatal编程技术网

将javascript中的数组组合成一个哈希数组,其中一个数组是所有的键,其余的是值

将javascript中的数组组合成一个哈希数组,其中一个数组是所有的键,其余的是值,javascript,underscore.js,Javascript,Underscore.js,我有两个数组,看起来如下所示: var foo=['id','first','last'] var student1=['1','sam','smith'] var student2=['2','jon','murphy'] 是否有一种有效的工具,可以使用类似underline.js或vanillajavascript的库,使您能够将这三个数组转换为如下所示的对象: var finalObj=[ {'id'=>1',first'=>sam',last'=>smith'}, {'id'=>2,'f

我有两个数组,看起来如下所示:

var foo=['id','first','last']
var student1=['1','sam','smith']
var student2=['2','jon','murphy']

是否有一种有效的工具,可以使用类似
underline.js
vanilla
javascript的库,使您能够将这三个数组转换为如下所示的对象:

var finalObj=[
{'id'=>1',first'=>sam',last'=>smith'},
{'id'=>2,'first'=>'jon','last'=>'murphy'}

];

假设数组的顺序总是重要的(它总是ID、第一个、最后一个)-您可以执行以下操作:

var people = [student1, student2]; //create 2d array
var finalObj = people.reduce(function(final, person) {
    var obj = {};
    obj[foo[0]] = person[0]
    obj[foo[1]] = person[1]
    obj[foo[2]] = person[2]
    final.push(obj);
    return final;
}, []);

//[Objectfirst: "sam"id: "1"last: "smith"__proto__: Object, Objectfirst: "jon"id: "2"last: "murphy"__proto__: Object]

下划线可能有帮助,例如:

_.map( [student1, student2], function(arr) {
     return _.object(foo, arr);
})

纯Javascript解决方案

var foo=['id','first','last'],
学生1=['1','sam','smith',],
学生2=['2','jon','murphy'],
结果=[student1,student2]。映射(函数(a){
var o={};
foo.forEach(函数(k,i){
o[k]=a[i];
});
返回o;
});
控制台日志(结果)