日志更新

淘宝海量图片存储与CDN系统

用 JavaScript 解数学题

题目:一个六位数,分别用2,3,4,5,6乘它,得到的五个新数仍是由原数中的六个数字组成,只是位置不同,则此六位数是多少?

function evaluate() {
    var multiplier = [2,3,4,5,6],
        sortNumber = function (number) {
            return parseInt((number + '').split('').sort().join(''), 10);    
        },
        gameOver = false, // 判断是否已经找到,如果找到,结束循环
        determine = function(origin) { 
            var result, i, len = multiplier.length;
            for( i = 0; i < len; i++ ) {
                result = origin * multiplier[i];
                if (result < 100000 || result > 999999 || sortNumber(result) !== sortNumber(origin)) {
                    return;
                }
                if(i === (len-1)){
                    gameOver = true;
                    alert('此六位数是 ' + origin);
                }
            }
        };
        
    // Math.floor(1000000/6) 缩小范围  
    for(var j = Math.floor(1000000/6); j >= 100000  && !gameOver; j--) { 
        determine(j);
    }    
}

扩展阅读:

各浏览器的并行连接数(同域名)

Browser HTTP/1.1 HTTP/1.0
IE 6,7 2 4
IE 8 6 6
Firefox 3+ 6 6
Safari 3+ 4 4
Chrome 3+ 4 4
Chrome 11+ 6
Opera 10+ 4 4
Opera 11+ 16

Updata:2011年5月24日,增加 Chrome 11+、Opera 11+。

扩展阅读:《Roundup on Parallel Connections》

与 Function 和 Object 相关的有趣代码

代码片段一:

alert(Function instanceof Object); // true    
alert(Object instanceof Function); // true

Function 是 Object 的实例,Object 也是 Function 的实例,好“纠缠”的关系。

代码片段一:

alert(Object.forEach); // undefined

Function.prototype.forEach = function(object, block, context) {
    for (var key in object) {
        if (typeof this.prototype[key] == "undefined") {
            block.call(context, object[key], key, object);
        }
    }
};

alert(Object.forEach); 
alert(Function.forEach);
alert(Object.forEach === Function.forEach); // true

给 Function 设置的原型方法 forEach,“有趣”的是 Object 也能够获取。

至于为什么可以从 JavaScript Object layout 图中获取部分解答:

JavaScript Object layout

看懂上图了没?如果看懂了,留道思考题给大家:

function Foo() {};
var foo = new Foo();

alert(foo instanceof Foo); // ?
alert(foo instanceof Object); // ?
alert(foo instanceof Function); // ?
alert(Foo instanceof Function); // ?
alert(Foo instanceof Object); // ?