摘要:今天開始,我從面試題切入開始做一些詳解和記錄,爭取每個工作日一篇歡迎關注吐槽要求以對象的大小排序返回問題解析對象是無序的,我們需要轉為有序數據結構,其實也就是轉為數組然后后再去排序。
今天開始,我從面試題切入開始做一些詳解和記錄,爭取每個工作日一篇!歡迎關注吐槽!
const obj = { a: 1, b: 3, c: -3, f: 5, d: 8 }
要求以對象value的大小排序返回[c,a,b,f,d]
問題解析:
1、對象是無序的,我們需要轉為有序數據結構,其實也就是轉為數組然后后再去排序。 2.按value排序簡單,但要求是輸入key對應的排序,我們需要想辦法做對應關系
function sortObj(obj) { //先轉為數組 let arr = [] // 遍歷json 方法有 Object.keys() for in 用keys以后還得繼續遍歷key數組,在這我們選用for in for (let item in obj) { // 這一步很關鍵,我們需要能按照value排序,有需要做key的對應關系,我的做法是這樣的 // 把json的每一項push到數組里,并拆分原對象key和value分別對應 arr.push({ key: item, value: obj[item] }) } console.log(arr) } sortObj(obj)
打印數組:
接下來就簡單多了,多于的數組排序方法我就不一一寫了,本次只為解決問題
function sortObj(obj) { //先轉為數組 let arr = [] // 遍歷json 方法有 Object.keys() for in 用keys以后還得繼續遍歷key數組,在這我們選用for in for (let item in obj) { // 這一步很關鍵,我們需要能按照value排序,有需要做key的對應關系,我的做法是這樣的 // 把json的每一項push到數組里,并拆分原對象key和value分別對應 arr.push({ key: item, value: obj[item] }) } arr = arr.sort((a, b) => { return a.value - b.value }) console.log(arr) } sortObj(obj)
此時結果為以value有序的數組了
接下來遍歷數組生成結果
function sortObj(obj) { //先轉為數組 let arr = [] // 遍歷json 方法有 Object.keys() for in 用keys以后還得繼續遍歷key數組,在這我們選用for in for (let item in obj) { // 這一步很關鍵,我們需要能按照value排序,有需要做key的對應關系,我的做法是這樣的 // 把json的每一項push到數組里,并拆分原對象key和value分別對應 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!
在來個es6的方法
let newArr = Object.entries(obj).sort((a, b) => { return a[1] - b[1] }).map((item) => { return item[0] }) console.log(newArr)
這個方法看起來很騷,其實原理和最開始的解析類似,Object.entries(obj) 會輸入一個數組,數組的每一項是一個數組,內容每一項是原對象每一項的key和value,看下圖:
解析完畢!
您的點贊or吐槽是我持續下去的動力!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/101383.html
摘要:昨天聊了一個算法題,今天接著聊多聊幾個。如果是是數組那么遞歸執行,并把當前和已有傳進去繼續。如果不是直接到第二種,邏輯一樣只不過遍歷換成了,如果讀的比較困難請移步了解第三種比較簡單會默認過濾數組內部,算是一個奇淫技巧。 昨天聊了一個算法題,今天接著聊!多聊幾個。 1、拍平數組(多維數組變成一維數組) let arr = [1,[2,3,[4],[5,6,[7]]],8]//...
摘要:插件開發前端掘金作者原文地址譯者插件是為應用添加全局功能的一種強大而且簡單的方式。提供了與使用掌控異步前端掘金教你使用在行代碼內優雅的實現文件分片斷點續傳。 Vue.js 插件開發 - 前端 - 掘金作者:Joshua Bemenderfer原文地址: creating-custom-plugins譯者:jeneser Vue.js插件是為應用添加全局功能的一種強大而且簡單的方式。插....
摘要:今天聊一下這個前端面試高頻問題,由此引出這些。下面我們先詳細的聊一下,完了解決下面試官的問題。數組之所以為是因為上邊說了和其實就是想說這兩個對于深度的實現來說不夠嚴謹要不就是多層判斷。 今天聊一下clone這個前端面試高頻問題,由此引出typeof、instanceof、Object.prototype.toString這些javascript Api。 下面我們先詳細的聊一下,完了解...
摘要:好不容易在月號這天中午點左右接到了來自阿里的面試電話。這里會不斷收集和更新基礎相關的面試題,目前已收集題。面試重難點的和的打包過程多線程機制機制系統啟動過程,啟動過程等等掃清面試障礙最新面試經驗分享,此為第一篇,開篇。 2016 年末,騰訊,百度,華為,搜狗和滴滴面試題匯總 2016 年未,騰訊,百度,華為,搜狗和滴滴面試題匯總 各大公司 Java 后端開發面試題總結 各大公司 Jav...
閱讀 3473·2021-11-18 10:02
閱讀 3720·2021-09-13 10:25
閱讀 1928·2021-07-26 23:38
閱讀 2574·2019-08-30 15:44
閱讀 2278·2019-08-30 13:51
閱讀 1232·2019-08-26 11:35
閱讀 2277·2019-08-26 10:29
閱讀 3450·2019-08-23 14:56