我的js代码中有以下内容:
// Format the links
const newLinks = Object.keys(this.props.mission.links).reduce((array, key) => {
return [...array, {url: this.props.mission.links[key], name:key}]
}, []);
创建我的对象:
{ url: "https://i.imgur.com/03gonKW.png", name: "mission_patch" }
但是有些情况下url为null我怎么能忽略它,所以它没有在对象中创建,这意味着如果url为null,它应该跳过它。
答案 0 :(得分:1)
最简单的解决方案是在reducer中添加一个条件:
const newLinks = Object.keys(this.props.mission.links).reduce((array, key) => {
if(!this.props.mission.links[key]) {
return array;
}
return [...array, {url: this.props.mission.links[key], name:key}]
}, []);
但是,请注意,这种情况(一般情况下)匹配map更好,然后reduce:
const links = this.props.mission.links;
const newLinks = Object.keys(links)
.filter(key => !!links[key])
.map(key => ({url: links[key], name: key}));
答案 1 :(得分:0)
需要执行以下操作
return this.props.mission.links[key] ? [...array, {url: this.props.mission.links[key], name:key}] : array;
答案 2 :(得分:0)
您可以先应用过滤器以仅获取非空值的键:
let filteredKeys = Object.keys(this.props.mission.links).filter((key) => !!this.props.mission.links[key])
然后应用你的减少,你也可以链接这些操作:
let result = Object.keys(this.props.mission.links).filter((key) => !!this.props.mission.links[key]).reduce((array, key) => { return [...array, {url: this.props.mission.links[key], name:key}] }, [])