TypeError:无法读取属性';1';尝试导航javascript对象时未定义的
我想定位并从Javascript对象提取数据 目标是:TypeError:无法读取属性';1';尝试导航javascript对象时未定义的,javascript,Javascript,我想定位并从Javascript对象提取数据 目标是: let object = { a: 2, b: { c: "x", d: [1, { e: 3 }] } }; 我想得到{e:3}对象 如果我这样做: object = object['b']; // Result is { c: "x", d: [1, { e: 3 }] } object = object['d']; // Result is [1, { e: 3 }] object = object['1']; // Res
let object = { a: 2, b: { c: "x", d: [1, { e: 3 }] } };
我想得到{e:3}
对象
如果我这样做:
object = object['b']; // Result is { c: "x", d: [1, { e: 3 }] }
object = object['d']; // Result is [1, { e: 3 }]
object = object['1']; // Result is { e : 3 }
然而,如果我这样做
let object = { a: 2, b: { c: "x", d: [1, { e: 3 }] } };
const path = 'b.d.1';
for(const pathPart in path.split('.')) {
object = object[pathPart];
console.log(`object = ${object}`);
console.log(`pathPart = ${pathPart}`);
}
我得到:
TypeError: Cannot read property '1' of undefined
您的代码:
for(const pathPart in path.split(‘.’))
这会将索引0、1、2放入pathPart
,而不是数组成员
在for循环中将中的切换到中的。您的代码:
for(const pathPart in path.split(‘.’))
这会将索引0、1、2放入pathPart
,而不是数组成员
在for循环中将中的切换到中的。console.log(pathPart)
并查看得到的结果。我猜您正在尝试迭代path.split('.')
,也许您应该尝试for…of
这可能吗?问题中还有两行没有显示的代码告诉您错误是什么:object=undefined
和pathPart=0
;如果你在失败之前移动日志,你会得到更多。console.log(pathPart)
看看你得到了什么。我想你是在尝试迭代path.split('.')
,也许你应该试试,看看这可能是什么?问题中还有两行没有显示的代码告诉您错误是什么:object=undefined
和pathPart=0
;如果你在失败之前移动日志,你会得到更多。