将两个数组(键和值)合并为一个对象[重复]
Posted
技术标签:
【中文标题】将两个数组(键和值)合并为一个对象[重复]【英文标题】:merge two arrays (keys and values) into an object [duplicate] 【发布时间】:2011-10-18 19:33:34 【问题描述】:我可以使用一个通用的 javascript/Coffeescript 特定的习语来完成这个吗?主要是出于好奇。
我有两个数组,一个由所需的键组成,另一个由所需的值组成,我想将其合并到一个对象中。
keys = ['one', 'two', 'three']
values = ['a', 'b', 'c']
【问题讨论】:
JavaScript 没有关联数组。对象成员可以通过类似数组的语法访问,但它们仍然是对象。 @nikc:谢谢,我意识到了。但考虑到上下文,我觉得“关联数组”会用更少的语言传达我的目标。 @Jorge - 只需称其为对象,因为这就是 javascript 所具有的。也少打字。 ;-) 【参考方案1】:var r = ,
i,
keys = ['one', 'two', 'three'],
values = ['a', 'b', 'c'];
for (let i = 0; i < keys.length; i++)
r[keys[i]] = values[i];
console.log(r);
.as-console-wrapper max-height: 100% !important; top: 0;
【讨论】:
很好的答案,但有没有办法保留重复项? @rashadb 否。对象不能有重复的键。【参考方案2】:keys = ['one', 'two', 'three']
values = ['a', 'b', 'c']
d =
for i, index in keys
d[i] = values[index]
说明: 在 coffeescript 中,您可以迭代一个数组并获取每个项目及其在数组或索引中的位置。 因此,您可以使用此索引将键和值分配给新对象。
【讨论】:
这就是我最终所做的(尽管在你回答之前)。不过,为你 +1 :)【参考方案3】:只要两个数组长度相同,就可以这样做:
var hash = ;
var keys = ['one', 'two', 'three']
var values = ['a', 'b', 'c']
for (var i = 0; i < keys.length; i++)
hash[keys[i]] = values[i];
console.log(hash['one'])
console.log(hash.two);
【讨论】:
很好的答案,但有没有办法保留重复项? @rashadb 否。对象不能有重复的键。以上是关于将两个数组(键和值)合并为一个对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章