js算法面试题

2020-06-10  本文已影响0人  一人创客

1.实现二维数组行转列

let arr = [
['前端','3人','8-15k','本科'],
['后端','5人','10-25k','研究生'],
['UI','2人','9-11k','大专'],
['ETL工程师','10人','6-12k','大专'],
];

//Transform =>

let newArr = [
['前端','后端','UI','ETL工程师'],
['3人','5人','2人','10人'],
['8-15k','10-25k','9-11k','6-12k'],
['本科','研究生','大专','大专'],
];

答案

 let arr = [
            ['前端', '3人', '8-15k', '本科'],
            ['后端', '5人', '10-25k', '研究生'],
            ['UI', '2人', '9-11k', '大专'],
            ['ETL工程师', '10人', '6-12k', '大专'],
        ];
        let arrs = arr1[0].map((a, i) => {
            return arr.map(e => { return e[i] })
        });
        console.log(arrs, '实现二维数组行转列')

2.对以下数据 取出每人(name)最大的销售量(sales) ( 对sales排序对name去重,加分项:不使用sort函数)

let arr = [
{ name:'小明', year: 2019 , sales: 53 }, { name:'小明', year: 2020 , sales: 234 }, { name:'小明', year: 2018 , sales: 24 },
{ name:'小强', year: 2019 , sales: 31 }, { name:'小强', year: 2020 , sales: 567 }, { name:'小强', year: 2018 , sales: 678 },
{ name:'小红', year: 2019 , sales: 465 }, { name:'小红', year: 2020 , sales: 82 }, { name:'小红', year: 2018 , sales: 576 },
{ name:'小马', year: 2019 , sales: 4567 }, { name:'小马', year: 2020 , sales: 832 }, { name:'小马', year: 2018 , sales: 674 },
];

//Transform =>

let newList = [
{ name:'小明', year: 2020 , sales: 234 },
{ name:'小强', year: 2018 , sales: 678 },
{ name:'小红', year: 2018 , sales: 576 },
{ name:'小马', year: 2019 , sales: 4567 }
]

答案

let arr = [
            { name: '小明', year: 2019, sales: 53 }, { name: '小明', year: 2020, sales: 234 }, { name: '小明', year: 2018, sales: 24 },
            { name: '小强', year: 2019, sales: 31 }, { name: '小强', year: 2020, sales: 567 }, { name: '小强', year: 2018, sales: 678 },
            { name: '小红', year: 2019, sales: 465 }, { name: '小红', year: 2020, sales: 82 }, { name: '小红', year: 2018, sales: 576 },
            { name: '小马', year: 2019, sales: 4567 }, { name: '小马', year: 2020, sales: 832 }, { name: '小马', year: 2018, sales: 674 },
        ];
        
 

        let nameList = Array.from(new Set(arr.map(e => { return e.name }))).reduce((previous, current) => {
            previous.push(
                arr.filter((item) => {
                return item.name == current
            }).reduce((previous, current) => {
            return previous.sales > current.sales ? previous : current
        }, [])
            )
            return previous
        }, []);
        
        console.log(nameList)
上一篇下一篇

猜你喜欢

热点阅读