JS遍历嵌套数组出现undefined及filter调用报错问题咨询
问题根源
你出现异常的核心原因是对Object.entries()返回的结构理解有误:Object.entries()处理对象后返回的二维数组中,每一个内层子数组(也就是你代码里的row)固定只有两个元素,第一个是原对象的键(字符串类型),第二个是原对象对应键的值。你对row做了全量遍历,就会把字符串类型的键也拿出来尝试访问A属性,字符串自然不存在A属性,所以每次遍历都会先输出对象的A属性值,再输出字符串键访问A得到的undefined。
filter报错原因
你尝试对col['A']调用filter方法,首先col['A']在遍历到字符串键的时候返回的是undefined,调用undefined的方法自然会抛出类型错误;其次就算是正常取到的A属性值是字符串类型,也不存在数组才有的filter方法,逻辑完全不成立。
正确访问方式
你不需要双层遍历内层的row,直接取每个row的第二个元素(索引为1)就是你要的目标对象,访问对应属性即可:
me_data.forEach(function(row){ // 直接取row[1]就是你要的包含A属性的对象 const targetObj = row[1] console.log(targetObj.A) })
如果确实需要兼容不确定的结构,可以加类型判断再访问:
me_data.forEach(function(row){ row.forEach(function(col){ // 先判断当前元素是对象且不是null,再访问A属性 if(typeof col === 'object' && col !== null) { console.log(col.A) } }) })
内容的提问来源于stack exchange,提问作者F. Certainly.
相关产品推荐
相关产品推荐

