我创建了一个包含 3 个对象的对象,其中一个包含三个对象,我想让它们中的每一个都设置值。而且不知道是否以对象的类型来划分,好像都是Object。我尝试这样做,第一次遍历以识别对象和数组,然后遍历两次,第三次离开,但控制台显示错误。>无法设置未定义的属性“www.google.com”类型错误:无法在eval处设置未定义的属性“www.google.com”(userscript.html?name=在Array.forEach()原脚本排除了四层嵌套Object浏览器搜索工具 Object.keys(iconsData).forEach(function(value1) { if(iconsData[value1].constructor === Array){ iconsData[value1].forEach(function (value2) { console.log('typeArray--'+iconsData[value1].constructor) value2.host.forEach(function(host) { iconsData.hostCustomMap[host] = value2.custom // The console shows an Error maybe here }) }) } else if (iconsData[value1].constructor === Object) { Object.keys(iconsData[value1]).forEach(function (value2) { console.log('typeObject--'+iconsData[value1].constructor) iconsData[value1][value2].forEach(function (value3) { value3.host.forEach(function(host){ iconsData.hostCustomMap[host] = value3.custom }); }); }); } })以下代码包含嵌套对象。
1 回答
慕标5832272
TA贡献1966条经验 获得超4个赞
无法设置未定义的属性“www.google.com” TypeError:无法设置未定义的属性“www.google.com”
引发错误是因为 hostCustomMap 不是 iconData 的属性。
在代码末尾设置一个名为 hostCustomMap 的变量,这应该是对象 iconData 的属性。就像原来的剧本一样。
像这样:
var iconsData = {
iconArraya: ...,
iconArrayb: ...,
iconArrayc: ...,
iconArrayD: ...,
hostCustomMap: {}
}
不是这个:
var iconsData = {
iconArraya: ...,
iconArrayb: ...,
iconArrayc: ...,
iconArrayD: ...
}
var hostCustomMap = {}
添加回答
举报
0/150
提交
取消