可能重复:
Convert flat array [k1,v1,k2,v2] to object {k1:v1,k2:v2} in JavaScript?功能到一个数组转换为一个关联数组
我想一个数组转换为JavaScript中关联数组。
例如,假设下面的输入,
var a = ['a', 'b', 'c', 'd'];
我想下一个关联数组作为输出:
{'a' : 'b', 'c' : 'd'}
我怎么能这样做?
可能重复:
Convert flat array [k1,v1,k2,v2] to object {k1:v1,k2:v2} in JavaScript?功能到一个数组转换为一个关联数组
我想一个数组转换为JavaScript中关联数组。
例如,假设下面的输入,
var a = ['a', 'b', 'c', 'd'];
我想下一个关联数组作为输出:
{'a' : 'b', 'c' : 'd'}
我怎么能这样做?
使用.forEach
:
var a = ['a', 'b', 'c', 'd'];
var obj_a = {};
a.forEach(function(val, i) {
if (i % 2 === 1) return; // Skip all even elements (= odd indexes)
obj_a[val] = a[i + 1]; // Assign the next element as a value of the object,
// using the current value as key
});
// Test output:
JSON.stringify(obj_a); // {"a":"b","c":"d"}
不错,我不知道array.forEach()。它是否适用于所有浏览器? – gintas 2012-02-27 13:23:58
@gintas:只在那些支持ES5的。但是你可以很容易地提供你自己的实现。 – 2012-02-27 13:24:36
哦,那太好了。但是你在做JSON.stringify(obj_a); ? – 2012-02-27 13:25:07
尝试以下操作:
var obj = {};
for (var i = 0, length = a.length; i < length; i += 2) {
obj[a[i]] = a[i+1];
}
'a.length'就足够了,因为无论如何你都会跳过2步。 – pimvdb 2012-02-27 13:21:59
@pimvdb这样做会不正确 - 考虑一个长度为1的数组... – 2012-02-27 13:23:34
@ rich.okelly然后它会是'{'a':undefined}',这可能比忘记密钥更好。 – 2012-02-27 13:24:17
有作为关联数组没有这样的事,他们是所谓的Object
秒,但这样做几乎同样的:-)
下面是你将如何做转换
var obj = {}; // "associative array" or Object
var a = ['a', 'b', 'c', 'd'];
for(index in a) {
if (index % 2 == 0) {
var key = a[index];
var val = a[index+1];
obj[key] = val;
}
}
你是指对象?你想让数组成员成为键或值吗? – 2012-02-27 13:16:34
嗯......这是一个关联数组,但使用数字如键。它类似于:'{1:'a',2:'b',3:'c',4:'d'}' – 2012-02-27 13:17:30
是的。确切地说,我希望他们作为key =>值对 – 2012-02-27 13:17:38