javascript - 是否有任何通用方法可以将四个数组值转换为javascript中的对象数组

标签 javascript typescript

如何在javascript中将四个数组值的数据推送到对象数组中?

   // Required input

columnHeaders=['deviceName','Expected','Actual','Lost']
machine=['machine 1','machine 2','machine 3','machine 4','machine 5']
data=[
    {expectedData:[600,400,500,200,100],label:'Expected'},
    {actualData:[500,300,400,100,50],label:'Actual'},
    {LostData:[100,100,100,100,50],label:'Lost'}
]

//预期输出

tableData=[
{deviceName:"machine 1",Expected:600,Actual:500,Lost:100},
{deviceName:"machine 2",Expected:400,Actual:300,Lost:100},
{deviceName:"machine 3",Expected:500,Actual:400,Lost:100},
{deviceName:"machine 4",Expected:200,Actual:100,Lost:100},
{deviceName:"machine 5",Expected:100,Actual:50,Lost:50} ]

我尝试过直接将键作为硬编码值传递,但我只是想知道解决此问题陈述的任何通用方法?请帮我解决这个问题。

//tried solution
   let array=[];let obj={};
for(let i=0;i<machine.length;i++){
        var expected = data[0].expectedData[i];
        var actual = data[1].actualData[i];
        var lost = data[2].LostData[i];
    obj ={[columnHeaders[0]]:machine[i],[columnHeaders[1]]:expected,[columnHeaders[2]]:actual,[columnHeaders[3]]:lost}
    console.log(obj);
    array.push(obj);
}
console.log(array);

最佳答案

您可以减少数组,但我建议使用更简化的格式,例如值数组的相同命名键。

这种方法首先使用machine数组来生成具有单个属性的对象数组,并且该数组是减少数据数组的起始值(可以将其缩短为单个数组)没有嵌套结构的对象)。

var columnHeaders = ['deviceName', 'Expected', 'Actual', 'Lost'],
    machine = ['machine 1', 'machine 2', 'machine 3', 'machine 4', 'machine 5'],
    data = [{ expectedData: [600, 400, 500, 200, 100], label: 'Expected' }, { actualData: [500, 300, 400, 100, 50], label: 'Actual' }, { LostData: [100, 100, 100, 100, 50], label: 'Lost' }],
    result = data.reduce(
        (r, { label, ...o }) => Object.values(o)[0].map((v, i) => ({ ...(r[i] || {}), [label]: v })),
        machine.map(v => ({ [columnHeaders[0]]: v }))
);

console.log(result);

关于javascript - 是否有任何通用方法可以将四个数组值转换为javascript中的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59680323/

相关文章:

reactjs - 将 TypeScript 与 React、无状态组件结合使用

javascript - 设置 Flash 通知超时

javascript - 有没有办法在任何浏览器(包括旧版 IE)中将 Raphael 论文结果转换为 PNG/SVG?

javascript - ./src/components/index.js 找不到模块 : Can't resolve './{Component}' in '/src/components'

Typescript - 共享方法但不是从共享基类派生的类

typescript - 键入一个带有可选键的对象,但对于存在的键是非空值

typescript - 如何使用 AWS Lambda for Firehose with CDK 启用转换源记录

javascript - 大小与 ArcGIS Javascript SimpleMarkerSymbol JSON 构造函数不一致

JavaScript 伪类模式

javascript - DataTables初始化关键字与官方示例不同