成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

讓前端面試不在難(常見算法一)

sunny5541 / 3457人閱讀

摘要:今天開始,我從面試題切入開始做一些詳解和記錄,爭取每個(gè)工作日一篇?dú)g迎關(guān)注吐槽要求以對(duì)象的大小排序返回問題解析對(duì)象是無序的,我們需要轉(zhuǎn)為有序數(shù)據(jù)結(jié)構(gòu),其實(shí)也就是轉(zhuǎn)為數(shù)組然后后再去排序。

今天開始,我從面試題切入開始做一些詳解和記錄,爭取每個(gè)工作日一篇!歡迎關(guān)注吐槽!

const obj = {
            a: 1,
            b: 3,
            c: -3,
            f: 5,
            d: 8
        }

要求以對(duì)象value的大小排序返回[c,a,b,f,d]

問題解析:

    1、對(duì)象是無序的,我們需要轉(zhuǎn)為有序數(shù)據(jù)結(jié)構(gòu),其實(shí)也就是轉(zhuǎn)為數(shù)組然后后再去排序。
    2.按value排序簡單,但要求是輸入key對(duì)應(yīng)的排序,我們需要想辦法做對(duì)應(yīng)關(guān)系
        function sortObj(obj) {
            //先轉(zhuǎn)為數(shù)組
            let arr = []
                // 遍歷json 方法有 Object.keys() for in  用keys以后還得繼續(xù)遍歷key數(shù)組,在這我們選用for in
            for (let item in obj) {
                // 這一步很關(guān)鍵,我們需要能按照value排序,有需要做key的對(duì)應(yīng)關(guān)系,我的做法是這樣的
               // 把json的每一項(xiàng)push到數(shù)組里,并拆分原對(duì)象key和value分別對(duì)應(yīng)
                arr.push({
                    key: item,
                    value: obj[item]
                })
            }
            console.log(arr)
        }
        sortObj(obj)

打印數(shù)組:

接下來就簡單多了,多于的數(shù)組排序方法我就不一一寫了,本次只為解決問題

function sortObj(obj) {
            //先轉(zhuǎn)為數(shù)組
            let arr = []
                // 遍歷json 方法有 Object.keys() for in  用keys以后還得繼續(xù)遍歷key數(shù)組,在這我們選用for in
            for (let item in obj) {
                // 這一步很關(guān)鍵,我們需要能按照value排序,有需要做key的對(duì)應(yīng)關(guān)系,我的做法是這樣的
                // 把json的每一項(xiàng)push到數(shù)組里,并拆分原對(duì)象key和value分別對(duì)應(yīng)
                arr.push({
                    key: item,
                    value: obj[item]
                })
            }
            arr = arr.sort((a, b) => {
                return a.value - b.value
            })
            console.log(arr)
        }
        sortObj(obj)


此時(shí)結(jié)果為以value有序的數(shù)組了
接下來遍歷數(shù)組生成結(jié)果

function sortObj(obj) {
            //先轉(zhuǎn)為數(shù)組
            let arr = []
                // 遍歷json 方法有 Object.keys() for in  用keys以后還得繼續(xù)遍歷key數(shù)組,在這我們選用for in
            for (let item in obj) {
                // 這一步很關(guān)鍵,我們需要能按照value排序,有需要做key的對(duì)應(yīng)關(guān)系,我的做法是這樣的
                // 把json的每一項(xiàng)push到數(shù)組里,并拆分原對(duì)象key和value分別對(duì)應(yīng)
                arr.push({
                    key: item,
                    value: obj[item]
                })
            }
            arr = arr.sort((a, b) => {
                return a.value - b.value
            })
            console.log(arr)
            return arr.map((item) => {
                return item.key
            })
        }
        console.log(sortObj(obj))

測試ok!

在來個(gè)es6的方法

        let newArr = Object.entries(obj).sort((a, b) => {
            return a[1] - b[1]
        }).map((item) => {
            return item[0]
        })
        console.log(newArr)

這個(gè)方法看起來很騷,其實(shí)原理和最開始的解析類似,Object.entries(obj) 會(huì)輸入一個(gè)數(shù)組,數(shù)組的每一項(xiàng)是一個(gè)數(shù)組,內(nèi)容每一項(xiàng)是原對(duì)象每一項(xiàng)的key和value,看下圖:

解析完畢!

您的點(diǎn)贊or吐槽是我持續(xù)下去的動(dòng)力!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/101383.html

相關(guān)文章

  • 前端面試不再常見算法

    摘要:昨天聊了一個(gè)算法題,今天接著聊多聊幾個(gè)。如果是是數(shù)組那么遞歸執(zhí)行,并把當(dāng)前和已有傳進(jìn)去繼續(xù)。如果不是直接到第二種,邏輯一樣只不過遍歷換成了,如果讀的比較困難請(qǐng)移步了解第三種比較簡單會(huì)默認(rèn)過濾數(shù)組內(nèi)部,算是一個(gè)奇淫技巧。 昨天聊了一個(gè)算法題,今天接著聊!多聊幾個(gè)。 1、拍平數(shù)組(多維數(shù)組變成一維數(shù)組) let arr = [1,[2,3,[4],[5,6,[7]]],8]//...

    nanchen2251 評(píng)論0 收藏0
  • JavaScript - 收藏集 - 掘金

    摘要:插件開發(fā)前端掘金作者原文地址譯者插件是為應(yīng)用添加全局功能的一種強(qiáng)大而且簡單的方式。提供了與使用掌控異步前端掘金教你使用在行代碼內(nèi)優(yōu)雅的實(shí)現(xiàn)文件分片斷點(diǎn)續(xù)傳。 Vue.js 插件開發(fā) - 前端 - 掘金作者:Joshua Bemenderfer原文地址: creating-custom-plugins譯者:jeneser Vue.js插件是為應(yīng)用添加全局功能的一種強(qiáng)大而且簡單的方式。插....

    izhuhaodev 評(píng)論0 收藏0
  • 前端面試不在(深度克隆 clone)

    摘要:今天聊一下這個(gè)前端面試高頻問題,由此引出這些。下面我們先詳細(xì)的聊一下,完了解決下面試官的問題。數(shù)組之所以為是因?yàn)樯线呎f了和其實(shí)就是想說這兩個(gè)對(duì)于深度的實(shí)現(xiàn)來說不夠嚴(yán)謹(jǐn)要不就是多層判斷。 今天聊一下clone這個(gè)前端面試高頻問題,由此引出typeof、instanceof、Object.prototype.toString這些javascript Api。 下面我們先詳細(xì)的聊一下,完了解...

    hover_lew 評(píng)論0 收藏0
  • Android-Java面試

    摘要:好不容易在月號(hào)這天中午點(diǎn)左右接到了來自阿里的面試電話。這里會(huì)不斷收集和更新基礎(chǔ)相關(guān)的面試題,目前已收集題。面試重難點(diǎn)的和的打包過程多線程機(jī)制機(jī)制系統(tǒng)啟動(dòng)過程,啟動(dòng)過程等等掃清面試障礙最新面試經(jīng)驗(yàn)分享,此為第一篇,開篇。 2016 年末,騰訊,百度,華為,搜狗和滴滴面試題匯總 2016 年未,騰訊,百度,華為,搜狗和滴滴面試題匯總 各大公司 Java 后端開發(fā)面試題總結(jié) 各大公司 Jav...

    TalkingData 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<