百度前端技术学院2015JavaScript基础部分代码实现
2.1 任务描述
- 创建一个JavaScript文件,比如
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)); //
// 对数组进行去重操作,只考虑数组中元素为数字或字符串,返回一个去重后的数组
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基础部分代码实现的更多相关文章
- 百度前端技术学院2015JavaScript基础部分-BOM
5.1 任务描述 实现以下函数 // 判断是否为IE浏览器,返回-1或者版本号 function isIE() { // your implement } // 设置cookie function s ...
- 百度前端技术学院2015JavaScript基础部分实现自己的小型jQuery
// 实现一个简单的Query function $(selector) { ); if (firstChar == "#") { var len = selector.split ...
- 百度前端技术学院-基础-day1
2020.9.14 今天我开始在百度前端技术学院学习基础课程. 先立一个Flag,希望我能在30天之内学完前四十天的课程,后续课程再一天一节. 第一天的内容主要是提供了很多基础学习的网页,比如W3sc ...
- 百度前端技术学院(IFE)2016春季学期总结
今天(5月16日)作为第八个提交者提交了任务五十:RIA微型问卷管理平台 这样一个综合性的大任务,宣告我的IFE春季学期课程学习顺利完成.其实任务五十并不复杂,现在再让我来做,可能一周不到就写出来了, ...
- 百度前端技术学院—-小薇学院(HTML+CSS课程任务)
任务一:零基础HTML编码 课程概述 作业提交截止时间:04-24 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理 ...
- 百度前端技术学院task1.10
任务十:Flexbox 布局练习 面向人群: 有一定HTML及CSS基础的同学 难度: 中 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容 ...
- 通过Github Pages在线查看百度前端技术学院完成的任务成果
前言 .note-content {font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHe ...
- 百度前端技术学院-task1.3源代码
因为其中有图片,所以就给有图片的位置加了边框和设置了大小,这样哪怕图片不显示也可以知道在哪里. <!DOCTYPE html> <html> <head> < ...
- 百度前端技术学院-基础-day2
2020.9.15 今天是学习前端基础技术的第二天,今天制作了一个在线简历,纯html的那种.帮助我复习了以前的基础知识,也增加了新的知识点,比如制作列表可以用fieldset来整合数据. 我的在线简 ...
随机推荐
- JS OOP编程
//父类 function BaseFun() { var hello = "HelloWorld"; this.HelloPublic = "Hello--World& ...
- [bzoj3192][JLOI2013]删除物品(树状数组)
3192: [JLOI2013]删除物品 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 872 Solved: 508[Submit][Status ...
- WebUpLoder 能自动预览,能多实例,包括后台demo
样式在网上找的.样子: 懒得写别的了,代码里面我写的注释挺详细的:https://github.com/zhangsai521314/WebUpLoder 写文不易,转载请注明出处:http://ww ...
- SVN版本号打包脚本工具
做网页游戏开发的时候,经常会触及到对文件版本号的管理.最近由于做新项目的原因,把原来手写版本号的方法改进了一下,借由svn的版本号生成及用java写了个xml解析输出文件,把手动的东西都变成全自动. ...
- Strus2第一次课:dom4j解析xml文档
xml文本标记语言: 常用于交换数据:独立于操作系统.编程语言数据存储:xml数据配置:灵活性强,可读性高可以使用css样式改变xml样式 xml解析技术:dom解析xml技术: sax解析xml技术 ...
- ps中的位图,矢量图,颜色模式
什么是位图?什么是矢量图? 位图是由像素组成的图像,在缩放和旋转的时候容易失真,同时文件容量较大 矢量图是根据几何特性来绘制的图形,通过数学公式计算获得的,不易制作色彩变化太多的图象 颜色模式 RGB ...
- PBS 安装
How to install PBS Pro using the configure script. . Install the prerequisite packages for building ...
- java maven strom 启动异常
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/storm/topology/IRich ...
- 根据大小生成对应尺寸网络图片的网址(mark)
当开发程序时,需要用到一些临时图片替代时,需要快速生成的话,以下的几个网址可提供帮助.mark一下,方便以后使用. http://lorempixel.com/http://placehold.it/ ...
- ExtJS获取父子、兄弟容器元素方法
http://www.cnblogs.com/CoolHu/archive/2012/12/08/2808433.html 1.当前对象的父对象(上级对象) this.ownerCt: 2.当前对象的 ...