【问题标题】: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 所具有的。也少打字。 ;-)

标签: javascript node.js coffeescript underscore.js


【解决方案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 否。对象不能有重复的键。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-24
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 2017-03-22
  • 2012-08-25
  • 1970-01-01
相关资源
最近更新 更多