【问题标题】:Trying to mapping two different arrays coming from an API to an Object尝试将来自 API 的两个不同数组映射到对象
【发布时间】:2021-05-29 23:06:42
【问题描述】:

所以我这里有来自后端 API 的数据。

usage_hours: {
  devices: ["350kVA GEN", "EKEDC", "85kVA GEN"], 
  hours: [405.946, 646.132, 0]
}

我想把它变成这个特定的数据,这样我就可以在我的 react 应用程序中呈现它。

usage_hours: [
  {
    "device_name": "350kVA GEN",
    "hours": 405.946
  },
  {
    "device_name": "EKEDC",
    "hours": 646.132
  },
  {
    "device_name": "85Kva",
    "hours": 0
  }
]

请问我可以通过什么方式做到这一点?一个让我接近的解决方案是:

usage_hours.hours.map((element)=>{
  let item = Object.fromEntries(
    data.usage_hours.devices.map((el, index) => [el, element])
  );
  newData.push(item);
})

【问题讨论】:

标签: javascript reactjs


【解决方案1】:

你可以这样做:

let usage_hours = {
  devices: ["350kVA GEN", "EKEDC", "85kVA GEN"],
  hours: [405.946, 646.132, 0]
}

let result = Object.entries(usage_hours)[0][1].map((item, index)=> ({device_name: item, hours: usage_hours.hours[index]}));
console.log('Result: ', result);

【讨论】:

  • 哇,非常感谢。我已经尝试修复这个错误将近一周了。非常感谢
  • 欢迎。如果它对你有帮助,也考虑支持我的回答。
【解决方案2】:

希望对你有所帮助。

let usage_hours = {
  devices: ["350kVA GEN", "EKEDC", "85kVA GEN"], 
  hours: [405.946, 646.132, 0]
}
let arr = [];
for (let [key, val] of Object.entries(usage_hours)) {
  key = key === 'devices' ? 'device_name' : key;
    
  for (let i = 0; i < val.length; i++) { 
  let obj = val.length <= arr.length ? arr[i] : {};  
    obj[key] = val[i];
    val.length > arr.length ? arr.push(obj): false;
  }
}

/*
usage_hours: [
  {
    "device_name": "350kVA GEN",
    "hours": 405.946
  },
  {
    "device_name": "EKEDC",
    "hours": 646.132
  },
  {
    "device_name": "85Kva",
    "hours": 0
  }
]
*/
console.log(arr);

【讨论】:

    猜你喜欢
    • 2020-12-10
    • 1970-01-01
    • 2021-11-09
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 2022-11-24
    • 1970-01-01
    相关资源
    最近更新 更多