自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 解构、参数默认值,不定参数,拓展参数、for of 值遍历

解构 自动解析数组或对象中的值。比如若一个函数要返回多个值,常规的做法是返回一个对象,将每个值做为这个对象的属性返回。但在ES6中,利用解构这一特性,可以直接返回一个数组,然后数组中的值会自动被解析到对应接收该值的变量中。var [x,y]=getVal(),//函数返回值的解构 [name,,age]=['wayou','male','secrect'];//数组解构function g

2017-06-28 22:38:56 526

原创 字符串模板

这个东西也是非常有用,当我们要插入大段的html内容到文档中时,传统的写法非常麻烦,所以之前我们通常会引用一些模板工具库,比如mustache等等。大家可以先看下面一段代码:$("#result").append( "There are <b>" + basket.count + "</b> " + "items in your basket, " + "<em>" + basket.o

2017-06-28 22:31:26 242

原创 arrow function

这个恐怕是ES6最最常用的一个新特性了,用它来写function比原来的写法要简洁清晰很多:function(i){ return i + 1; } //ES5(i) => i + 1 //ES6简直是简单的不像话对吧… 如果方程比较复杂,则需要用{}把代码包起来:function(x, y) { x++; y--; return x + y;}(x, y) =>

2017-06-28 22:29:54 272

转载 class, extends, super

这三个特性涉及了ES5中最令人头疼的的几个部分:原型、构造函数,继承…你还在为它们复杂难懂的语法而烦恼吗?你还在为指针到底指向哪里而纠结万分吗?有了ES6我们不再烦恼!ES6提供了更接近传统语言的写法,引入了Class(类)这个概念。新的class写法让对象原型的写法更加清晰、更像面向对象编程的语法,也更加通俗易懂。class Animal { constructor(){

2017-06-28 22:26:18 190

原创 let, const

这两个的用途与var类似,都是用来声明变量的,但在实际运用中他俩都有各自的特殊用途。 首先来看下面这个例子:var name = 'zach'while (true) { var name = 'obama' console.log(name) //obama break}console.log(name) //obama使用var两次输出都是obama,这是因为ES

2017-06-28 22:23:00 147

原创 es6-Proxy

Proxy可以监听对象身上发生了什么事情,并在这些事情发生后执行一些相应的操作。一下子让我们对一个对象有了很强的追踪能力,同时在数据绑定方面也很有用处。//定义被侦听的目标对象var engineer = { name: 'Joe Sixpack', salary: 50 };//定义处理程序var interceptor = { set: function (receiver, prop

2017-06-28 21:09:37 145

原创 es6新特性-Set和Map数据结构

Set和Map数据结构 Set 本身是一个构造函数,用来生成 Set 数据结构。Set 结构不会添加重复的值。 Set 函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化。// 例一const set = new Set([1, 2, 3, 4, 4]);[...set]// [1, 2, 3, 4]// 例二const items = new Set([1, 2, 3, 4,

2017-06-28 20:57:35 385

转载 JavaScript中定义类或对象

(1)工厂方式 (2)构造函数方式 (3)原型方式 (4)混合的构造函数/原型方式 (5)动态原型方法(1)工厂方式 原始的方式var oCar = new Object;oCar.color = "blue";oCar.doors = 4;oCar.mpg = 25;oCar.showColor = function() { alert(this.color);};在上面的

2017-06-27 22:22:14 151

原创 jQuery 中的proxy()和delegation()方法

jquery中proxy和delegation的区别: proxy就是为一个函数绑定一个context; delegate是通过将事件绑定到父元素上,然后在事件处理器运行时判断子元素来决定是否运行。proxy()方法 在某些情况下,我们调用Javascript函数时候,this指针并不一定是我们所期望的那个。例如://正常的this使用$('#myElement').click(functi

2017-06-27 21:50:55 326

转载 AngularJS: Factory vs Service vs Provider

引言 看了很多文章可能还是不太说得出AngularJS中的几个创建供应商(provider)的方法(factory(),service(),provider())到底有啥区别,啥时候该用啥,之前一直傻傻分不清楚,现在来总结一下。下文中泛指统一用中文,英文即为特指$provide方法中对应方法创建出的东东供应商==>泛指provider 服务==>泛指serviceprovider==>provi

2017-06-27 21:07:31 131

原创 Symmetric Difference

创建一个函数,接受两个或多个数组,返回所给数组的 对等差分(symmetric difference) (△ or ⊕)数组.给出两个集合 (如集合 A = {1, 2, 3} 和集合 B = {2, 3, 4}), 而数学术语 “对等差分” 的集合就是指由所有只在两个集合其中之一的元素组成的集合(A △ B = C = {1, 4}). 对于传入的额外集合 (如 D = {2, 3}), 你应该安

2017-06-27 20:34:46 1113 1

原创 Validate US Telephone Numbers

如果传入字符串是一个有效的美国电话号码,则返回 true.用户可以在表单中填入一个任意有效美国电话号码. 下面是一些有效号码的例子(还有下面测试时用到的一些变体写法):555-555-5555 (555)555-5555 (555) 555-5555 555 555 5555 5555555555 1 555 555 5555在本节中你会看见如 800-692-7753 or 8oo-si

2017-06-26 17:44:14 796 2

原创 Arguments Optional

创建一个计算两个参数之和的 function。如果只有一个参数,则返回一个 function,该 function 请求一个参数然后返回求和的结果。例如,add(2, 3) 应该返回 5,而 add(2) 应该返回一个 function。调用这个有一个参数的返回的 function,返回求和的结果:var sumTwoAnd = add(2);sumTwoAnd(3) 返回 5。如果两个参数都不是有

2017-06-26 15:42:10 747

原创 传入二进制字符串,翻译成英语句子并返回

传入二进制字符串,翻译成英语句子并返回。二进制字符串是以空格分隔的。function binaryAgent(str) { //将二进制串str用空格分割成数组code var code=str.split(' '); //保存最终字符串数组 var result=''; for(var i=0;i<code.length;i++){ //将数组code[i]中二进制数通过

2017-06-26 15:22:39 485

原创 对嵌套的数组进行扁平化处理

对嵌套的数组进行扁平化处理。你必须考虑到不同层级的嵌套。思路Array.isArray(value) 可以用来判断某个值是否为数组,是则返回 true ,不是返回 false 。因为需要解决层级嵌套的问题,所以本题用递归来解决。遍历 arr 的每一项,如果该项为数组,则重复调用本函数,如果不是数组,则将这一项推入结果集中。function steamroller(arr) { var resul

2017-06-26 15:13:36 697

原创 删除数组中不符合条件的元素

让我们来丢弃数组(arr)的元素,从左边开始,直到回调函数return true就停止。第二个参数,func,是一个函数。用来测试数组的第一个元素,如果返回fasle,就从数组中抛出该元素(注意:此时数组已被改变),继续测试数组的第一个元素,如果返回fasle,继续抛出,直到返回true。最后返回数组的剩余部分,如果没有剩余,就返回一个空数组。思路用 while() 循环,当 func(arr[0]

2017-06-26 15:06:52 2246

原创 求能被两个给定参数和它们之间的连续数字整除的最小公倍数

找出能被两个给定参数和它们之间的连续数字整除的最小公倍数。范围是两个数字构成的数组,两个数字不一定按数字顺序排序。例如对 1 和 3 —— 找出能被 1 和 3 和它们之间所有数字整除的最小公倍数。注意: 这里涉及到经典算法:求最大公约数gcd(greatest common divisor)和最小公倍数scm(smallest common multiple) gcd(最大公约数)算法过程

2017-06-26 14:57:32 644

原创 求小于等于给定数值的质数之和

求小于等于给定数值的质数之和。只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 整除。1 不是质数,因为它只能被自身整除。给定的数不一定是质数。function sumPrimes(num) { var sum=0; for (var i = 2; i <= num; i++) { var isPrimes=true;

2017-06-26 14:40:20 384

原创 给一个正整数num,返回小于或等于num的斐波纳契奇数之和

给一个正整数num,返回小于或等于num的斐波纳契奇数之和。斐波纳契数列中的前几个数字是 1、1、2、3、5 和 8,随后的每一个数字都是前两个数字之和。 提示:此题不能用递归来实现斐波纳契数列。因为当num较大时,内存会溢出。function sumFibs(num) { var a=0,b=0,c=1,sum=0; for(var i=0;c<=num;i++){ su

2017-06-26 14:07:59 509

原创 将字符串转换为以-连接的全小写单词

将字符串转换为 spinal case。Spinal case 是 all-lowercase-words-joined-by-dashes 这种形式的,也就是以连字符连接所有小写单词。spinalCase(“This Is Spinal Tap”) 应该返回 “this-is-spinal-tap”。 spinalCase(“thisIsSpinalTap”) 应该返回 “this-is-spi

2017-06-26 13:58:49 283

原创 Sorted Union

写一个 function,传入两个或两个以上的数组,返回一个以给定的原始数组排序的不包含重复值的新数组。换句话说,所有数组中的所有值都应该以原始顺序被包含在内,但是在最终的数组中不包含重复值。非重复的数字应该以它们原始的顺序排序,但最终的数组不应该以数字顺序排序。function unite(arr1, arr2, arr3) { var array=[]; for(var i=0;i<ar

2017-06-26 13:37:10 363

原创 Missing letters

从传递进来的字母序列中找到缺失的字母并返回它。如果所有字母都在序列中,返回 undefined。1)function fearNotLetter(str) { var first = str.charCodeAt(0); //把第一个字母的Unicode值单独保存 for (var i = 0; i < str.length;i++) { //遍历str字符串

2017-06-26 13:19:23 233

原创 DNA Pairing

DNA 链缺少配对的碱基。依据每一个碱基,为其找到配对的碱基,然后将结果作为第二个数组返回。Base pairs(碱基对) 是一对 AT 和 CG,为给定的字母匹配缺失的碱基。在每一个数组中将给定的字母作为第一个碱基返回。例如,对于输入的 GCG,相应地返回 [[“G”, “C”], [“C”,”G”],[“G”, “C”]]字母和与之配对的字母在一个数组内,然后所有数组再被组织起来封装进一个数组。

2017-06-26 12:07:43 219

原创 Pig Latin

输入一个字符串,如果首字母为辅音,移到尾部,加后缀ay,如果为元音’aeiou’,加后缀way.function translate(str) { var reg = 'aeiou'; //把五个元音字母放到一个字符串里 var arr = str.split(''); if (reg.indexOf(arr[0]) >= 0){ //当单词第一个字母能在元音

2017-06-26 12:03:26 193

原创 使用给定的参数对句子执行一次查找和替换,然后返回新句子

使用给定的参数对句子执行一次查找和替换,然后返回新句子。第一个参数为搜索字符串,第二个参数为搜索目标,第三个参数为替换字符串 。注意:第二个参数首字母大写,第三个参数首字母也要大写。function myReplace(str, before, after) { if (before.charAt(0).toUpperCase() === before.charAt(0)) { afte

2017-06-26 11:46:22 756

原创 Wherefore art thou

返回collection内对象包含source对象内所有属性,并且值相等。function where(collection, source) { var arr = []; collection.forEach((cur) => { var has = true; Object.keys(source).forEach((c) => { if (source[c

2017-06-26 11:33:33 297

原创 将给定的数字转换成罗马数字

将给定的数字转换成罗马数字。function convert(num) {var a=[["","I","II","III","IV","V","VI","VII","VIII","IX"], //个位 ["","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"], //十位 ["","C","CC","CCC","CD","D","

2017-06-26 11:11:34 265

原创 比较两个数组,返回不同值

比较两个数组,然后返回一个新数组,该数组的元素为两个给定数组中所有独有的数组元素。换言之,返回两个数组的差异。function diff(arr1, arr2) { return arr1.filter(function(v){ return arr2.indexOf(v)==-1; //第一个数组在第二个数组中不同的项 }).concat(arr2.filter(functi

2017-06-26 10:50:27 1390

原创 JavaScript之call() 、apply() 函数

使用如下两个方法,可以修改函数调用上下文,也就是this的值 apply() 函数.apply(对象, 函数需要参数列表,是一个数组)call() 函数.call(对象,arg1,arg2,arg3…argn)call和apply的区别: 1.第一个参数都是要把this修改成的对象; 2.当函数需要参数的时候,那么apply是用数组进行参数的传递; 3.而call是使用单个的参数进行传递

2017-06-26 10:31:17 189

原创 给定数字范围求和

我们会传递给你一个包含两个数字的数组。返回这两个数字和它们之间所有数字的和。最小的数字并非总在最前面。function sumAll(arr) { var result=0; a_start=Math.min(arr[0],arr[1]); a_end=Math.max(arr[0],arr[1]); while(a_start<=a_end){ result+=a

2017-06-26 00:53:30 629

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除