一、Sum All Numbers in a Range 求两数之间的所有数字的总和
思路:
1、求最大值
2、求最小值
3、循环求和
由一张空白的「A4纸」开始,FOCUS ON 大前端、数据可视化、小程序、小游戏
思路:
1、求最大值
2、求最小值
3、循环求和
思路:
1、循环第二个串每个字符检查是否在第一个串中出现
代码如下:
function mutation(arr) { var len = arr[1].length, a = arr[0].toLowerCase(), b = arr[1].toLowerCase(); for(var i=0;i<len;i++){ if(a.indexOf(b.charAt(i))<0){ return false; } } return true; } mutation(["hello", "hey"]);
false, null, 0, "", undefined, 和 NaN
值元素去掉思路:
1、主要是用String.prototype.substr()
获取尾串是否与目标相等
代码如下:
function confirmEnding(str, target) { // "Never give up and good luck will find you." // -- Falcor if(target.length > str.length){ return false; } else{ if(str == target || str.substr(str.length- target.length) == target){ return true; }else{ return false; } } } confirmEnding("Bastian", "n");
思路:
比较简单,拼上去就行
思路:
1、打散成为单字符数组
2、把数组反序
3、把反序后的数组合拼成为结果字符串
代码如下:
function reverseString(str) { return str.split('').reverse().join(''); } reverseString("hello");
思路:
比较简单,就一个循环乘上去
代码如下:
function factorialize(num) { var r = 1; for(var i=1;i<=num;i++){ r = r * i; } return r; } factorialize(5);
思路:
1、先把特殊字符去掉
2、把字符串反序
3、比较顺序与序串是否相等 继续阅读“当年练手FreeCodeCamp中的js基础算法编码题1~6 [源码]”
用 setTimeout 多了,总是觉得这函数就差那么一点点,不是很顺手,就萌生了要改造一下此函数的念头;改成可以链式编程的,名字也更加接地气点的,就叫 delay 吧。
/** * 让目标(Object)延时执行,可以链式使用 * * @param {Number} time * @param {Function} doSomething - * - @param {Object} self -- 作为参数回调使用 * - @param {Number} startTime -- 作为参数回调使用 * @return {Object} */ Object.prototype.delay = function (time, doSomething) { var self = this, startTime = time; if (self) { setTimeout(function () { doSomething(self, startTime); }, time); } return this; }
在各面向对象语言里面如java,C#等语言开发中,为了提高安全性,经常要对类里面的私有变量进行get、set封装后供外部使用。而在javascript中
Object.defineProperty(obj, prop, descriptor)
也有类似getter、setter。并且可以给getter和setter绑定相应的事件处理。这样,每当prop发生改变(set)s或者执行被读取值(get)时就自动执行已绑定的相应的事件处理函数或者方法。 继续阅读“javascript设计模式 – 给对象绑定一个可访问的属性(defineProperty 数据绑定)”
观察都模式定义了对象间的一对多依赖关系,因此当一个对象的状态发生改变,所有其他有依赖关系的对象将自动被通知和更新
观察都模式提供了一个订阅模型,当对象订阅了一个事件后,当事件发生后将会被通知。这个模式是包括javascript在内的事件驱动编程的基石。观察都模式使用面向对象设计变得容易,也促进解藕。
当创建网页应用程序你可能要写很多事件处理函数,当发生特定的事件,这些函数将会被触发。这些通知有选择地接收一个关于这个事件的带明细的事件参数(比如:点击事件中将有鼠标的x和y的位置)。
这个javascript事件和事件处理函数范例就是一个观察都模式,它的另一个叫法是发布/订阅模式。 继续阅读“javascript设计模式 – 观察者模式”
所有做过.net、java或者php开发的人都应该听过依赖注入dependency injection(DI)或者inverse of control(IOC)控制反转,依赖注入是一种软件设计模式,它让人移除硬生生的写死的依赖关系,让人可以修改它们。依赖可以通过构造函数、定义方法或者设置属性来注入对象。
减小对象与依赖之间的藕合关系。
不需要对原代码进行修改,直接可以应用到当前代码。
有助于把客户与设计隔离开,减小设计改变带来的影响。
让系统不用修改当前代码就可以重新配置。
可以进行并行或者独立开发。
让代码更好维护和测试,因为用其他依赖包或者模版代替的话依赖的影响可以被消除。 继续阅读“javascript设计模式 – 依赖注入”