var eenhedennamen = ['unit1', 'unit2', 'unit3'];
var value = [1,2,3];
我试图让:如何两个数组合并成一个对象
var newobject = {'unit1' : 1
'unit2': 2
'unit3' : 3};
我怎样才能做到这一点?
var eenhedennamen = ['unit1', 'unit2', 'unit3'];
var value = [1,2,3];
我试图让:如何两个数组合并成一个对象
var newobject = {'unit1' : 1
'unit2': 2
'unit3' : 3};
我怎样才能做到这一点?
假设这些是平行的阵列(在eenhedennamen
第一条目使用在value
的第一个条目),可以循环通过与jQuery的$.each
,它给你的索引和为每个条目的条目,并构建对象从环路。
var obj = {};
$.each(eenhedennamen, function(index, entry) {
obj[entry] = value[index];
});
这工作,因为在JavaScript中,您可以使用点符号和属性名称,文字(obj.foo = "bar"
),或括号符号与字符串属性名(obj["foo"] = "bar"
)访问性能。在后一种情况下,字符串可以是任何表达式的结果。所以在上面,我们使用entry
作为属性名称,这将是eenhedennamen
中的每个名称。当然,我们使用index
从value
得到相应的值。
如果他们不是以相同的顺序或值[]具有不同的值会怎么样? – ssilas777
Thx!这个工作,我会在5分钟内接受你的答案:) – user3117628
@ ssilas777:正如我上面所说,答案取决于他们是平行阵列,OP确认他们是。否则,我们需要知道应用的映射是什么;基本概念是相似的。 –
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];
}
上一个答案比较好。
没有理由为'z'使用数组。 –
你是对的,没必要。正如我所说 - 你的答案更好。 –
试试这个:
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));
是始终以相同的顺序? (“单元1”是否总是“1”等? – putvande
是的,他们总是:) – user3117628