我收到的数据中有很多字段为空,如果字段为空,我必须填充一些内容.

比如下面的数据

{   //...
    IGM_ETD: '2021-11-27T23:59:00+05:00',
    milestatus: null,
    transit_depart: null,
    etd_atd: null,
    // around 200+ fields
 }

在这里,transit_depart为null,如果数据为null,我将使用三元运算符来返回一些东西,如下图所示;

// this is a reproducible example.
// there are some other styles and comp to display if/else part
{transit_depart ? <>{transit_depart}</> : <>Not Available<>}

这是预期的工作,但问题是我有大约200多个类似的字段,如果我遵循这一点,那么在future ,如果我们必须进行任何UI更改,那么我们将更改所有相关的代码在这里.那么如何避免它,或者我们如何管理它.

推荐答案

用默认值替换不可用数据需要事先进行分析.大多数情况下,许多字段可能具有不同的默认值.

例如,0表示创建金额;有些日子是现在,有些日子是一年的第一天;""或"空白"或"不适用于某些字符串...

您需要一个方法来将一些字段映射到特定的默认值,其余字段都有一个最终默认值.

比如:

let data = {
    IGM_ETD: '2021-11-27T23:59:00+05:00',
    milestatus: null,
    transit_depart: null,
    etd_atd: null    
}

function setDefaults(data) {
  const someDefaults = {
    milestatus: 0,
    transit_depart: new Date('2021-01-01')
  }
  const theDefault = "N/A";  
  for (const [key, value] of Object.entries(data)) {
    if (value==null) {
      if (someDefaults[key]!=null) {
        data[key] = someDefaults[key]
      } else {
        data[key] = theDefault;
      }
    }
  }
  return data;
}

setDefaults(data);

/* now data contains
{
  IGM_ETD:"2021-11-27T23:59:00+05:00",
  milestatus:0,
  transit_depart:"2021-01-01T00:00:00.000Z",
  etd_atd:"N/A"
}
*/

Javascript相关问答推荐

使用useup时,React-Redux无法找到Redux上下文值

如何在使用fast-xml-parser构建ML时包括属性值?

React Code不在装载上渲染数据,但在渲染上工作

浮动Div的淡出模糊效果

函数返回与输入对象具有相同键的对象

无法从NextJS组件传递函数作为参数'

用于编辑CSS样式的Java脚本

我正在建立一个基于文本的游戏在react ,我是从JS转换.我怎样才能使变量变呢?

保持物品顺序的可变大小物品分配到平衡组的算法

在运行时使用Next JS App Router在服务器组件中运行自定义函数

查询参数中的JAVASCRIPT/REACT中的括号

Rxjs流中生成IMMER不能在对象上操作

try 将Redux工具包与MUI ToggleButtonGroup组件一起使用时出错

删除元素属性或样式属性的首选方法

在JS/TS中将复杂图形转换为数组或其他数据 struct

在GraphQL解析器中修改上下文值

为什么我不能使用其同级元素调用和更新子元素?

P5play SecurityError:无法从';窗口';读取命名属性';Add';:阻止具有源的帧访问跨源帧

如何在Highlihte.js代码区旁边添加行号?

我们是否可以在reactjs中创建多个同名的路由