摘要:今天開始,我從面試題切入開始做一些詳解和記錄,爭取每個(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
摘要:昨天聊了一個(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]//...
摘要:插件開發(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)大而且簡單的方式。插....
摘要:今天聊一下這個(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ì)的聊一下,完了解...
摘要:好不容易在月號(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...
閱讀 3478·2021-11-18 10:02
閱讀 3726·2021-09-13 10:25
閱讀 1932·2021-07-26 23:38
閱讀 2585·2019-08-30 15:44
閱讀 2294·2019-08-30 13:51
閱讀 1239·2019-08-26 11:35
閱讀 2284·2019-08-26 10:29
閱讀 3458·2019-08-23 14:56