В моем 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-адрес равен нулю, как я могу его игнорировать, чтобы он не создавался в объекте, что означает, что если URL-адрес равен нулю, он должен его пропустить.
как насчет `return [... array, {url: this.props.mission.links [key]! == undefined?» this.props.mission.links [ключ]: "", имя: ключ}] `?
точно, используйте ternary op ИЛИ if (), чтобы судить о url
Спасибо @Hassan Imam, что сработало



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Самым простым решением было бы добавить условие в ваш редуктор:
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}]
}, []);
Но обратите внимание, что этот случай (в общем) лучше соответствует карте, чем сокращает:
const links = this.props.mission.links;
const newLinks = Object.keys(links)
.filter(key => !!links[key])
.map(key => ({url: links[key], name: key}));
Нужно сделать следующее
return this.props.mission.links[key] ? [...array, {url: this.props.mission.links[key], name:key}] : array;
Вы можете сначала применить фильтр, чтобы получить только ключи с ненулевыми значениями:
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}] }, [])
Может это
return this.props.mission.links[key] ? [...array, {url: this.props.mission.links[key], name:key}] : array;