2014-01-27 93 views
1
var eenhedennamen = ['unit1', 'unit2', 'unit3']; 
    var value = [1,2,3]; 

我试图让:如何两个数组合并成一个对象

 var newobject = {'unit1' : 1 
         'unit2': 2 
        'unit3' : 3}; 

我怎样才能做到这一点?

+3

是始终以相同的顺序? (“单元1”是否总是“1”等? – putvande

+0

是的,他们总是:) – user3117628

回答

7

假设这些是平行的阵列(在eenhedennamen第一条目使用在value的第一个条目),可以循环通过与jQuery的$.each,它给你的索引和为每个条目的条目,并构建对象从环路。

var obj = {}; 
$.each(eenhedennamen, function(index, entry) { 
    obj[entry] = value[index]; 
}); 

这工作,因为在JavaScript中,您可以使用点符号和属性名称,文字(obj.foo = "bar"),或括号符号与字符串属性名(obj["foo"] = "bar")访问性能。在后一种情况下,字符串可以是任何表达式的结果。所以在上面,我们使用entry作为属性名称,这将是eenhedennamen中的每个名称。当然,我们使用indexvalue得到相应的值。

+0

如果他们不是以相同的顺序或值[]具有不同的值会怎么样? – ssilas777

+1

Thx!这个工作,我会在5分钟内接受你的答案:) – user3117628

+0

@ ssilas777:正如我上面所说,答案取决于他们是平行阵列,OP确认他们是。否则,我们需要知道应用的映射是什么;基本概念是相似的。 –

0
var eenhedennamen = [ 'unit1', 'unit2', 'unit3' ]; 
var value = [ 1, 2, 3 ]; 
var z = new Array(); 
for (var i = 0; i < eenhedennamen.length; i++) { 
    z[eenhedennamen[i]]=value[i]; 
} 

上一个答案比较好。

+0

没有理由为'z'使用数组。 –

+0

你是对的,没必要。正如我所说 - 你的答案更好。 –

0

您可以使用Array.prototype.reduce

试试这个:

var eenhedennamen = ['unit1', 'unit2', 'unit3']; 
var value = [1,2,3]; 
var arr3 = eenhedennamen.reduce(function(obj, val, i) { 
    obj[val] = value[i]; 
    return obj; 
}, {});  
    console.log(JSON.stringify(arr3)); 

Try in fiddle

Reference

相关问题