从数组创建 Json 对象

blu*_*sky -3 javascript jquery

使用下面的代码,我尝试将可变长度的数组转换为一个对象,其中位置 i 处的项目是对象名称,位置 i+1 处的项目是项目值。例如 :

arr = []; 
arr.push('a');
arr.push(1);
arr.push('b');
arr.push(2);
arr.push('c');
arr.push(3);

/* Want to create an object that is of type : */ 

var ob = {a:1 , b:2 , c:3}
console.log(ob)
Run Code Online (Sandbox Code Playgroud)

这是我试图用来实现此目的的代码:

var ob2 = {}

for (var i = 0; i < arr.length; i++) {
    ob2.arr[i] = arr[i + 1]
    i = i + 1
}
Run Code Online (Sandbox Code Playgroud)

但收到错误:

(index):63 Uncaught TypeError: Cannot set property '0' of undefined
    at window.onload ((index):63)
Run Code Online (Sandbox Code Playgroud)

小提琴: https: //jsfiddle.net/wxkkjzm0/

arr = []; 
arr.push('a');
arr.push(1);
arr.push('b');
arr.push(2);
arr.push('c');
arr.push(3);

/* Want to create an object that is of type : */ 

var ob = {a:1 , b:2 , c:3}
console.log(ob)
Run Code Online (Sandbox Code Playgroud)

arr 和 ob2 被定义为该错误属于哪个?

Nin*_*olz 5

您可以将索引变量增加2,因为您需要一对来分配键/值对。

var array = ['a', 1, 'b', 2, 'c', 3],
    object = {},
    i

for (var i = 0; i < array.length; i += 2) {
    object[array[i]] = array[i + 1];
}

console.log(object);
Run Code Online (Sandbox Code Playgroud)