调用不存在的属性时减少/连接问题



如果"a_b"不存在,则以下代码将回滚未定义 - 这就是我想要的:

var abc= json.reduce((a,c) => a.concat({xyz:c.a_b}), [])

但是,如果我执行以下代码并在不存在的"a_b"中查找"媒体",则会出现失败"无法读取未定义的属性'媒体'"。

var abc= json.reduce((a,c) => a.concat({xyz:c.a_b.media}), [])

为什么会这样呢?

在这两种情况下,"a_b"都不存在,如果我只是调用它,代码就可以了,但如果我尝试在其中寻找属性,则不能。

有没有办法解决这个问题?

例如,我正在尝试使用"||null",但这似乎在连接中不起作用,如下所示。

var abc= json.reduce((a,c) => a.concat({xyz:c.a_b.media || null}), [])

不要使用concat方法,它将创建一个新的数组实例,请改用push

var abc = json.reduce((a, c) => {
      a.push({ xyz: c.a_b && c.a_b.media });
      return a;
}, []);

最新更新