Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何不映射缺少子值的对象_Javascript_Reactjs_Mapping - Fatal编程技术网

Javascript 如何不映射缺少子值的对象

Javascript 如何不映射缺少子值的对象,javascript,reactjs,mapping,Javascript,Reactjs,Mapping,我正在映射数组中的一些数据。数组长度是3,所以我得到了3个版本。如果子值是'或未定义的,我不希望它映射该对象,只映射具有所有值的对象 const data = { status4Weeks: "2", status12Weeks: "" }; 状态12周应跳过,因为其为空。我为映射创建了一个新数组,并添加了一些其他值 const newdata = [ { title: "4 Weeks", statusWeek: data.status4

我正在映射数组中的一些数据。数组长度是3,所以我得到了3个版本。如果子值是
'
未定义的
,我不希望它映射该对象,只映射具有所有值的对象

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
},[])