将两个数组(键和值)合并为一个对象[重复]

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 否。对象不能有重复的键。

以上是关于将两个数组(键和值)合并为一个对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章

高效地将 JavaScript 键和值数组转换为对象

使用javascript删除与对象的另一个键和值对相对应的对象数组中的重复项

Javascript映射函数:向对象添加新键和值[重复]

将对象数组转换为包含键和值的对象作为对象数组

创建php键和值数组[重复]

通过从两个不同的数组中随机选择键和值将两个数组组合成一个数组