如何将当前数组格式更改为对象数组格式?

Sha*_*aun 2 javascript arrays ecmascript-6 reactjs

如何将来自 api 的以下数据结构更改为下面定义的所需格式?

inspectionViewAllRs = [
  {
    INSPN_XFER_SEQ_NR: {
      value: '5'
    },
    FNRL_FLG: {
      label: 'No',
      value: 'N'
    },
    HAS_PAST_INSPN: {
      value: '3'
    },
    MTG_CO_PHN_AREA_CD: {
      value: ''
    },
    DECLARATION_CD: {
      label: 'US Citizen/Non-Citizen National',
      value: 'CZ'
    },
    ....
    ....
    ....
  },
  { ... }
  { ... }
  { ... }
]
Run Code Online (Sandbox Code Playgroud)

我怎样才能把它转换成这个对象数组格式?

inspectionViewAllRs = [
  { label: "", value: '5' },
  { label: "No", value: "N" },
  { label: "", value: "3" },
  { label: "", value: "" },
  { label: "US Citizen/Non-Citizen National", value: "CZ" },
  ....
  ....
  ....
]
Run Code Online (Sandbox Code Playgroud)

我尝试执行以下操作,但这无济于事:

    if(!_.isEmpty(this.state.inspectionViewAllRsData)) {
  const result = this.state.inspectionViewAllRsData.map((data, i) => {
    const items = Object.values(data);
    const newItem = {}
    newItem.label = items[i].label;
    newItem.value = items[i].value;
    
    return newItem
  })

  console.log("result ", result)
  
  // this is what I see printed out in console log
  // result (5) [{…}, {…}, {…}, {…}, {…}]
              0: {label: undefined, value: "5"}
              1: {label: "No", value: "N"}
              2: {label: undefined, value: "3"}
              3: {label: undefined, value: ""}
              4: {label: "", value: ""}
              length: 5
}
Run Code Online (Sandbox Code Playgroud)

为什么我没有得到返回所有其余数据?

Maj*_*awi 6

使用Array#flatMapObject#values获取对象值的一个列表,然后Array#map获取所有相同的属性:

const inspectionViewAllRs = [
  {
    INSPN_XFER_SEQ_NR: { value: '5' },
    FNRL_FLG: { label: 'No', value: 'N' },
    HAS_PAST_INSPN: { value: '3' },
    MTG_CO_PHN_AREA_CD: { value: '' },
    DECLARATION_CD: { label: 'US Citizen/Non-Citizen National', value: 'CZ' },
  },
  {
    DECLARATION_CD: { label: 'US Citizen/Non-Citizen National', value: 'CZ' },
  }
];

const res = inspectionViewAllRs
  .flatMap(Object.values) // get one list of objects
  .map(({ label = '', value = '' }) => ({ label, value })); // return list of label/value objects

console.log(res);
Run Code Online (Sandbox Code Playgroud)