0

我有这样的 JSON 数据:

[{20181:{jum:27}},{20182:{jum:27}},{20191:{jum:27}},{20192:{jum:27}},{20201:{jum:27}},{20202}]

我尝试使用 for 函数调用数据,代码如下:

let i = 0;
let {mhsaktif}=this.state;
          let t20181 = [];
          let t20182 = [];
          let t20191 = [];
          let t20192 = [];
          let t20201 = [];
          let t20202 = [];
          for(i = 0; i < mhsaktif.length; i++){
            if(mhsaktif[i][20181] != undefined){
              t20181 =<td style={{textAlign:'center'}}>{mhsaktif[i][20181].jum}</td>;
            }else{
              t20181 =<td style={{textAlign:'center'}}>0</td>;
            }
            if(mhsaktif[i][20182] != undefined){
              t20182 =<td style={{textAlign:'center'}}>{mhsaktif[i][20182].jum}</td>;
            }else{
              t20182 =<td style={{textAlign:'center'}}>0</td>;
            }
            if(mhsaktif[i][20191] != undefined){
              t20191 =<td style={{textAlign:'center'}}>{mhsaktif[i][20191].jum}</td>;
            }else{
              t20191 =<td style={{textAlign:'center'}}>0</td>;
            }
            if(mhsaktif[i][20192] != undefined){
              t20192 =<td style={{textAlign:'center'}}>{mhsaktif[i][20192].jum}</td>;
            }else{
              t20192 =<td style={{textAlign:'center'}}>0</td>;
            }
            if(mhsaktif[i][20201] != undefined){
              t20201 =<td style={{textAlign:'center'}}>{mhsaktif[i][20201].jum}</td>;
            }else{
              t20201 =<td style={{textAlign:'center'}}>0</td>;
            }
            if(mhsaktif[i][20202] != undefined){
              t20202 =<td style={{textAlign:'center'}}>{mhsaktif[i][20202].jum}</td>;
            }else{
              t20202 =<td style={{textAlign:'center'}}>0</td>;
            }
       }

所以我呼吁回报

{t20181}{t20182}{t20191}{t20192}{t20201}{t20202}

为什么输出会产生如下图: 在此处输入图像描述

谢谢你的回答先生

4

1 回答 1

2

我会用一个例子来解释。

假设i0
第一个条件将进入if分支并设置t20181

t20181 =<td style={{textAlign:'center'}}>{mhsaktif[i][20181].jum}</td>;

Next when ibecome1
第一个条件再次执行,会进入else分支并覆盖 t20181

t20181 =<td style={{textAlign:'center'}}>0</td>;

现在t20181将永远是<td style={{textAlign:'center'}}>0</td>

您可以使用此循环来解决问题

let elements = []
for(i = 0; i < mhsaktif.length; i++) {
  let key = Object.keys(mhsaktif[i])[0]
  if(key != null && mhsaktif[i][key] != null) {
    elements[key] = <td style={{textAlign:'center'}}>{mhsaktif[i][key].jum}</td>;
  } else {
    elements[key] = <td style={{textAlign:'center'}}>0</td>;
  }
}
于 2021-03-18T23:08:34.837 回答