Reduce/concat 调用不存在的 属性 的 属性 时出现问题
Reduce/concat issue when calling a property of a property that doesn't exist
如果 "a_b" 不存在,则以下代码返回未定义的 - 这正是我想要的:
var abc= json.reduce((a,c) => a.concat({xyz:c.a_b}), [])
但是,如果我执行以下代码并在 "a_b" 中查找不存在的 "media",那么我会失败 "Cannot read property 'media' of undefined"。
var abc= json.reduce((a,c) => a.concat({xyz:c.a_b.media}), [])
为什么会这样?
在这两种情况下,"a_b" 都不存在,但如果我只是调用它,代码就可以了,但如果我尝试在其中寻找 属性 则不行。
有办法解决这个问题吗?
例如,我正在尝试使用“|| null”,但这在 concat 中似乎不起作用,如下所示。
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;
}, []);
如果 "a_b" 不存在,则以下代码返回未定义的 - 这正是我想要的:
var abc= json.reduce((a,c) => a.concat({xyz:c.a_b}), [])
但是,如果我执行以下代码并在 "a_b" 中查找不存在的 "media",那么我会失败 "Cannot read property 'media' of undefined"。
var abc= json.reduce((a,c) => a.concat({xyz:c.a_b.media}), [])
为什么会这样?
在这两种情况下,"a_b" 都不存在,但如果我只是调用它,代码就可以了,但如果我尝试在其中寻找 属性 则不行。
有办法解决这个问题吗?
例如,我正在尝试使用“|| null”,但这在 concat 中似乎不起作用,如下所示。
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;
}, []);