util.js
;util.js
中實現如下方法:
// 判斷arr是否爲一個數組,返回一個bool值 function isArray(arr) { // your implement } // 判斷fn是否爲一個函數,返回一個bool值 function isFunction(fn) { // your implement }
// 判斷arr是否爲一個數組,返回一個bool值 function isArray(arr) { // your implement return Object.prototype.toString.call(arr) === "[object Array]"; } // 判斷fn是否爲一個函數,返回一個bool值 function isFunction(fn) { // your implement return Object.prototype.toString.call(fn) === "[object function]"; }
util.js
中實現如下方法:// 使用遞歸來實現一個深度克隆,能夠複製一個目標對象,返回一個完整拷貝// 被複制的對象類型會被限制爲數字、字符串、布爾、日期、數組、Object對象。不會包含函數、正則對象等function cloneObject(src) { // your implement } // 測試用例:var srcObj = { a: 1, b: { b1: ["hello", "hi"], b2: "JavaScript" } }; var abObj = srcObj; var tarObj = cloneObject(srcObj); srcObj.a = 2; srcObj.b.b1[0] = "Hello"; console.log(abObj.a); console.log(abObj.b.b1[0]); console.log(tarObj.a); // 1console.log(tarObj.b.b1[0]); // "hello"
// 使用遞歸來實現一個深度克隆,能夠複製一個目標對象,返回一個完整拷貝 // 被複制的對象類型會被限制爲數字、字符串、布爾、日期、數組、Object對象。不會包含函數、正則對象等 function cloneObject(src) { // your implement var result;//定義克隆後的結果 if (typeof(src) == "object" ) {//判斷是不是引用類型 if (Object.prototype.toString.call(src) === "[object Data]") {//若是是data類型,直接克隆 result = src; } else { resule = (Object.prototype.toString.call(src) === "[object Array]")?[]:{};//先判斷對象的類型 if (src.hasOwnProperty(i)) {//判斷是否爲對象自身的屬性 if (typeof src[i] == "object") {//若是爲對象,遍歷複製 result[i] = cloneObject(src[i]); } else {//若是爲數組,一對一克隆! result[i] = src[i]; } } } } else {//當爲原始類型時,直接複製! result = src; } }
util.js
中實現如下函數// 對數組進行去重操做,只考慮數組中元素爲數字或字符串,返回一個去重後的數組function uniqArray(arr) { // your implement } // 使用示例var a = [1, 3, 5, 7, 5, 3]; var b = uniqArray(a); console.log(b); // [1, 3, 5, 7] //去除開頭和結尾的空白 function trim(arr) { // your implement } // 使用示例var str = ' hi! '; str = trim(str); console.log(str); // 'hi!' // 實現一個遍歷數組的方法,針對數組中每個元素執行fn函數,並將數組索引和元素做爲參數傳遞function each(arr, fn) { // your implement } // 其中fn函數能夠接受兩個參數:item和index // 使用示例var arr = ['java', 'c', 'php', 'html']; function output(item) { console.log(item) } each(arr, output); // java, c, php, html // 使用示例var arr = ['java', 'c', 'php', 'html']; function output(item, index) { console.log(index + ': ' + item) } each(arr, output); // 0:java, 1:c, 2:php, 3:html // 獲取一個對象裏面第一層元素的數量,返回一個整數function getObjectLength(obj) {} // 使用示例var obj = { a: 1, b: 2, c: { c1: 3, c2: 4 } }; console.log(getObjectLength(obj)); // 3
// 對數組進行去重操做,只考慮數組中元素爲數字或字符串,返回一個去重後的數組 function uniqArray(arr) { // your implement var result = [];//定義一個新的數組,用於存放沒有重複的元素 for (var i = 0; i < arr.length; i++) { if(result.indexOf(arr[i]) = -1) { result.push(arr[i]); } } return result; } // 不少同窗確定對於上面的代碼看不下去,接下來,咱們真正實現一個trim // 對字符串頭尾進行空格字符的去除、包括全角半角空格、Tab等,返回一個字符串 // 嘗試使用一行簡潔的正則表達式完成該題目 function trim(str) { // your implement var result = ""; result = str.replace(/^\s+|\s+$/g,""); return result; } // 實現一個遍歷數組的方法,針對數組中每個元素執行fn函數,並將數組索引和元素做爲參數傳遞 function each(arr, fn) { // your implement if(!isArray(arr)){ return false; } if(!isFunction(fn)){ return false; } for (var i = 0; i < arr.length; i++) { fn(arr[i],i); } } // 獲取一個對象裏面第一層元素的數量,返回一個整數 function getObjectLength(obj) { var count = 0; for (var keys in obj) { count++; } return count; }
util.js
完成如下代碼// 判斷是否爲郵箱地址 function isEmail(emailStr) { // your implement } // 判斷是否爲手機號 function isMobilePhone(phone) { // your implement }
//判斷是不是郵箱地址 function isEmail(str){ var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/; return reg.test(str); } // 判斷是否爲手機號 function isMobilePhone(phone) { // your implement var reg = /^1[3-8]\d{9}/ return reg.text(phone); }