从数组创建 Json 对象
2018-01-10
6548
使用以下代码,我尝试将可变长度的数组转换为对象,其中位置 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)
这是我尝试使用的代码:
var ob2 = {}
for (var i = 0; i < arr.length; i++) {
ob2.arr[i] = arr[i + 1]
i = i + 1
}
但收到错误:
(index):63 Uncaught TypeError: Cannot set property '0' of undefined
at window.onload ((index):63)
fiddle: 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)
var ob2 = {}
for (var i = 0; i < arr.length; i++) {
ob2.arr[i] = arr[i + 1]
i = i + 1
}
console.log(ob2);
arr 和 ob2 已定义,此错误与哪个有关?
3个回答
您可以将索引变量增加
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);
Nina Scholz
2018-01-10
正如错误试图告诉您的那样,
ob2.arr
不存在。
您可能需要具有该名称的属性,即
ob2[arr[i]]
SLaks
2018-01-10
您的错误在于:
ob2.arr...
并且不需要执行:
i = i + 1
由于您在
for
循环声明中递增
i
(
i++
)
您想要:
ob2[arr[i]] = arr[i+1]
请注意,如果您保持原样,您将超出界限,因此请执行:
for (let i = 1; i < arr.length; i+=2) {
ob2[arr[i-1]] = arr[i]
}
mad.meesh
2018-01-10