首先,很差意思,我昨天偷懶了,沒有更新面試題,今日補上昨日的鍋。前端
基於上次的對象轉化題目,很多同窗指出對象種的數組若是長度不同,不能知足功能,因此針對這個進行優化,代碼以下所示:es6
<script> let obj = { 0: [44, 67], 1: [90, 43, 56], 2: [56, 67, 33], 3: [80, 96, 45] }; function getArr(obj) { if (typeof obj != "object") { console.warn("參數不正確"); return; } const arr = []; // 遍歷對象的每個對象 for (var item in obj) { if (obj.hasOwnProperty(item) === true) { // map取對象每個total對應的值取賦值 obj[item].map((i, index) => { if (!arr[index]) { arr[index] = []; } arr[index].push(obj[item][index]); }); } } return arr; } console.log(getArr(obj)); </script>
若是你有不一樣的方法,或者更好的方法請來信(email:785784961@qq.com)面試
這裏須要注意的是:npm
1.封裝函數的入參類型判斷,而且給出友好的提示,好比警告,或者入參示例後端
2.使用for in 遍歷對象會遍歷原型鏈,須要咱們判斷一下數組
3.對於遍歷中新生成的數組要判斷是否有沒有函數
4.開發代碼中調試時,儘可能使用console.log()來打印值,減小alert()使用優化
5.封裝插件要寫好readme,或者在js中寫好註釋es5
6.能夠的化,建議使用包管理,實現安裝操做,即npm發佈spa
進入數組去重的操做,看一下題目
<script> // 2019-3-5 今日面試題,數組去重 let m = [1, 2, 2], n = [2, 3, 3]; // 返回 m 和n 的不重複的元素,而且按照從小到大排序 let arr = [1,2,3] </script>
這道題的考查點:
1.數組的合併
2.數組排序
3.數組去重
首先咱們進入es6快速實現的過程,定義一個箭頭函數,使用new Set 合併數組,再用sort方法去排序,最後Array.from生成新的數組,就能夠搞定了
<script> // 2019-3-5 今日面試題,數組去重 let m = [1, 2, 2], n = [2, 3, 3]; // 返回 m 和n 的不重複的元素,而且按照從小到大排序 const func = (m, n) => Array.from(new Set(m.concat(n))).sort((a, b) => a - b); console.log(func(m, n)); </script>
第二種:常規的方法es5
<script> // 2019-3-5 今日面試題,數組去重 let m = [1, 2, 2], n = [2, 3, 3]; // 返回 m 和n 的不重複的元素,而且按照從小到大排序 // 第二種方法 function getArr(m, n) { for (var i = 0; i < n.length; i++) { if (m.indexOf(n[i]) < 0) { m.push(n[i]); } } var arr = []; for (var l = 0; l < m.length; l++) { if (arr.indexOf(m[l]) == -1) { arr.push(m[l]); } } arr = arr.sort(function(x, y) { return x - y; }); return arr; } console.log(getArr(m, n)); </script>
若是降序的話的第二種交互sort中y-x就行了
<script> // 2019-3-5 今日面試題,數組去重 let m = [1, 2, 2], n = [2, 3, 3]; // 返回 m 和n 的不重複的元素,而且按照從小到大排序 // 第二種方法 function getArr(m, n) { for (var i = 0; i < n.length; i++) { if (m.indexOf(n[i]) < 0) { m.push(n[i]); } } var arr = []; for (var l = 0; l < m.length; l++) { if (arr.indexOf(m[l]) == -1) { arr.push(m[l]); } } arr = arr.sort(function(x, y) { return y- x; }); return arr; } console.log(getArr(m, n)); </script>
注意:
1.這裏咱們沒有判斷入參類型,須要調用函數時注意一下,須要是數組類型
2.平常開發中,前端和後端會約定數據類型,通常不會改變類型,因此咱們能夠省略類型判斷,減小數據處理的時間
3.須要考慮的點,上面數組量數據過大如何處理,如何快速排序
2019-3-6面試題
<script> // 2019-3-6 面試題,時間格式轉化 let data= { create_time:'2019-02-05T08:14:28.000Z' }; // 將上面的時間進行格式化,按照入參形式返回一下3種形式 // 第一種 let time1 = '2019-02-05' // 第二種 let time2 = '2019-02-05 08:14:28' // 第三種 let time3 = '2019年02月05日 上午8點14分' // 請在下面函數補充完整 function getTime(time,type){ } </script>