标签:sem 数据 包含 out count hone 官方 实现 key
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); }
百度前端技术学院2015JavaScript基础部分代码实现
标签:sem 数据 包含 out count hone 官方 实现 key
原文地址:http://www.cnblogs.com/zhixuanziben/p/6102015.html