Javascript 如何不映射缺少子值的对象
我正在映射数组中的一些数据。数组长度是3,所以我得到了3个版本。如果子值是Javascript 如何不映射缺少子值的对象,javascript,reactjs,mapping,Javascript,Reactjs,Mapping,我正在映射数组中的一些数据。数组长度是3,所以我得到了3个版本。如果子值是'或未定义的,我不希望它映射该对象,只映射具有所有值的对象 const data = { status4Weeks: "2", status12Weeks: "" }; 状态12周应跳过,因为其为空。我为映射创建了一个新数组,并添加了一些其他值 const newdata = [ { title: "4 Weeks", statusWeek: data.status4
'
或未定义的
,我不希望它映射该对象,只映射具有所有值的对象
const data = {
status4Weeks: "2",
status12Weeks: ""
};
状态12周应跳过,因为其为空。我为映射创建了一个新数组,并添加了一些其他值
const newdata = [
{
title: "4 Weeks",
statusWeek: data.status4Weeks,
color: status4WeeksColor,
numWeeks: 4
},
{
title: "12 Weeks",
statusWeek: data.status12Weeks,
color: status12WeeksColor,
numWeeks: 12
}
];
4周不应被映射为驱动这一点的基本值缺失
{newdata.map(v => (
<ListItem dense={this.props.dense} alignItems="flex-start">
<ListItemText
primary={
<React.Fragment>
Predicted score - <strong>{v.title}</strong>
</React.Fragment>
}
secondary={
<React.Fragment>
<Typography component="span" color="textPrimary">
Predicted date{" "}
<i
style={{ "font-size": "1em" }}
className="zmdi zmdi-calendar mx-2"
/>{" "}
{moment(data.vulnerabilityDate)
.add(v.numWeeks, "weeks")
.format("MMM DD, YYYY")}
</Typography>
</React.Fragment>
}
/>
<ListItemSecondaryAction>
<span
style={{
"font-size": "1rem",
"background-color": v.color,
"min-width": "45px"
}}
className="vulnerability badge badge-primary"
>
{v.statusWeek}
</span>
</ListItemSecondaryAction>
</ListItem>
))}
映射数组仍将返回从数组中删除索引 在这种情况下,使用将起作用 您应该使用以下内容:
array.filter(e=> (e!==undefined && e.length>0)).map(e=> /*your map stuff*/)
希望这有帮助,您可以简单地使用
在reduce内部,若值为true,则可以检查该值是否存在,而不仅仅是添加到最终输出
newdata.reduce((op,inp) => {
if(inp) {
op.push(inp)
}
return inp
},[])
首先使用.filter()
删除元素,然后使用.map()
。只需使用reduce()
newdata.reduce((op,inp) => {
if(inp) {
op.push(inp)
}
return inp
},[])