篩選筆試題

題目:

var arr = [
    { name: '小米1', value: 1, type: 2, date: '2018-06-07T08:00:01.589Z' },
    { name: '錘子T1', value: 1, type: 2, date: '2018-06-07T08:10:01.589Z' },
    { name: '小米2', value: 1, type: 4, date: '2018-06-07T20:00:01.589Z' },
    { name: '小米2', value: 4, type: 4, date: '2018-06-07T20:10:21.189Z' },
    { name: '小米4', value: 1, type: 4, date: '2018-06-07T08:00:01.560Z' },
    { name: '小米4', value: 2, type: 4, date: '2018-06-07T08:10:31.584Z' },
    { name: '小米6', value: 1, type: 3, date: '2018-06-07T08:00:01.589Z' },
    { name: '小米5s', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },
    { name: '錘子T2', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },
    { name: '錘子T1', value: 4, type: 4, date: '2018-06-07T08:06:01.589Z' },
    { name: '魅藍(lán)note5', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },
    { name: '魅藍(lán)note2', value: 5, type: 4, date: '2018-06-02T08:07:01.589Z' },
    { name: '魅藍(lán)note2', value: 6, type: 4, date: '2018-06-07T08:00:01.589Z' },
    { name: '魅藍(lán)note3', value: 1, type: 4, date: '2018-06-05T08:00:01.589Z' },
    { name: '魅藍(lán)note', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' },
    { name: 'oppor9', value: 7, type: 4, date: '2018-06-04T08:04:01.588Z' },
    { name: '華為p9', value: 1, type: 4, date: '2018-06-02T08:00:01.577Z' },
    { name: '華為p9', value: 2, type: 4, date: '2018-06-07T08:00:01.110Z' },
    { name: '華為p10', value: 1, type: 1, date: '2018-06-07T08:00:01.534Z' }
];
  • 請用您認(rèn)為最優(yōu)化的方式,將arr中的type為4的數(shù)據(jù)過濾出來,
  • 然后按相同的 name + date(按天)合并value(value累加),
  • 然后按 value 降序(從大到小)排序,
  • 最后每行按照 ${name},${本地日期},售出${sum(value)}部"的格式,如:"小米2,2017年06月08日,售出5部", 打印(console.log)出來。
  • 可以使用第三方j(luò)s庫,可以使用es6。
  • 請?jiān)诎胄r(shí)內(nèi)完成。

要求最后輸出結(jié)果樣例如下:

oppor9,2017年06月04日,售出7部
魅藍(lán)note2,2017年06月07日,售出6部
魅藍(lán)note2,2017年06月02日,售出5部
小米2,2017年06月08日,售出5部

......

方案:

var newArr1 = arr.filter(item => item.type === 4);          // 1. 將arr中type為4的數(shù)據(jù)過濾出來
var newArr2 = mergeArray(newArr1);                          // 2. 按相同的name + date(按天)合并value(value累加)
var newArr3 = newArr2.sort((a, b) => b.value - a.value);    // 3. 按value降序(從大到?。┡判?printArrar(newArr3);                                        // 4. 每行按照name,本地日期,售出X部的格式,打印出來

// 按相同的name + date(按天)合并value(value累加)
// 數(shù)組的下標(biāo)可以是字符串
function mergeArray(source) {
    var temp = [];
    source.forEach(item => {
        var key = item.name + item.date.slice(0, 10);
        if (typeof temp[key] === 'undefined') {
            temp[key] = item;
        } else {
            temp[key].value += item.value;
        }
    });
    var result = [];
    for (var i in temp) {
        result.push(temp[i]);
    }
    return result;
}

// 每行按照name,本地日期,售出X部的格式,打印出來
function printArrar(array) {
    array.forEach(item => {
        var date = item.date.slice(0, 10).split('-');
        console.log(`${item.name},${date[0]}年${date[1]}月${date[2]}日,售出${item.value}部`);
    });
}

知識點(diǎn):數(shù)組的下標(biāo),可以是字符串

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 干開發(fā)也有不少年頭了,其實(shí)每個(gè)開發(fā)人員應(yīng)該都有總結(jié)和寫技術(shù)點(diǎn)的習(xí)慣,俗言說得好“好記性不如一個(gè)爛筆頭”。 我是一枚...
    catherine單眼皮小眼睛閱讀 13,949評論 24 7
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,889評論 0 13
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 12,298評論 6 13
  • 一只白鶴飛在高高的空中,人們看到了,禁不住贊嘆說:“快看??!那只白鶴多么 高潔??!身姿多么矯健,真好看!” ...
    六藝蒙館閱讀 334評論 2 0
  • 1. 一起吃早餐吧。想起來總是覺得特別溫馨。 2.一起去看日出吧。很遺憾高三畢業(yè)沒有和你一起看,有機(jī)會(huì)一起看一下吧...
    一席廢話吧閱讀 259評論 0 4

友情鏈接更多精彩內(nèi)容