繁体   English   中英

Javascript - 重构数组 - 数组减少

[英]Javascript - refactor array - array reduce

重构(ise)对象数组/数组的最佳方法是什么? 我正在考虑使用array.reduce,但无法找到解决方案。

例如,转换这个数组:

const carsInput =
     [
        {
            brand: 'volkswagen',
            model: 'golf',
            motorSpec: {
                ...
            },
            Dim: {
                ...
            },
        },
...
        {
            brand: 'volkswagen',
            model: 'passat',
            motorSpec: {
                ...
            },
            Dim: {
                ...
            },
        },
    ]

到这个对象数组

const carsOutput =
    {
        volkswagen: {
            brandName: 'volkswagen',
            models: {
                golf: {
                    modelName: 'golf',
                    motorSpec: {
                       ...
                    },
                    Dim: {
                       ...
                    },
                },
                passat: {
                    modelName: 'passat',
                    motorSpec: {
                        ...
                    },
                    Dim: {
                        ...
                    },
                },
            },
        },
    }

此外,如果您想到另一种(更好的)方式来呈现这组对象,我全神贯注! 非常感谢

我相信其他人有更简洁的方法来做到这一点,但这是一种方法。

const carsInput =
     [{
            brand: 'ford',
            model: 'mustang',
            motorSpec: {
            },
            Dim: {
            }
        },
        {
            brand: 'volkswagen',
            model: 'golf',
            motorSpec: {
            },
            Dim: {
            }
        },
        {
            brand: 'volkswagen',
            model: 'passat',
            motorSpec: {
            },
            Dim: {
            }
        },
    ];
    
const carsOutput = new Object();

function initializeMake(makeName) {
  carsOutput[makeName] = { brandName: makeName, models: {}};
  return carsOutput[makeName]
}

carsInput.forEach(car => {
    let make = carsOutput[car.brand] || initializeMake(car.brand);

    const modelDefinition = { 
    'modelName': car['model'],
    'motorSpec': car.motorSpec,
    'Dim': car.Dim
  };
  
    make.models[car.model] = modelDefinition;
});

console.log(carsOutput)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM