www.6766.comjs常用代码段收集_javascript技巧_脚本之家

  • most[0]; } function s_1 { var a = a.join, b = []; while a =
    a.replace(new RegExp((b[b.length]www.6766.comjs常用代码段收集_javascript技巧_脚本之家。 = a.charAt; return b; } /**//*
    功能:把有序数组打乱
    说明:基本的排序算法大家应该都很清楚。但是在编程中也经常用到相反的操作,即把原来有序的数组元素随机打乱。
    以下给出三种方法,第一种是以前我自己写出来的,由于水平差,写出的代码时间复杂度太大,
    于是从网上搜索一些简单而且效率高的方法来。
    第二种据说是“洗牌算法”,想必很多人都听说过;
    第三种是利用JS的内置sort方法,这种实现起来很简单。 */ // 方法1 function
    randArray { var rands = []; var ra = parseInt; rands.push; for (var r
    = 0; r < num – 1; r++) { ra = parseInt; for (var m = 0; m <
    rands.length; m++) { while { ra = parseInt; m = -1; } } rands.push;
    return rands; } // 方法2:
    //选择两个[0…array.Length)之间的随机数,把它们做下标的两个元素交换位置
    /* 说明:这是“洗牌算法” 有人证明打乱的效果如下:
    随机交换nums/2次的效果很差,平均约1/3的对象还在原来的位置
    随机交换nums次才基本可用,平均约15%的对象还在原来的位置
    随机交换nums*2次才真正可用,平均约2%的对象还在原来的位置 */ function
    daluan { var array=[]; for (var i = 0; i < nums; i++) { array[i]
    = i; } for (var i = 0; i < nums; i++) { var rand = parseInt; var temp
    = array[i]; array[i] = array[rand]; array[rand] = temp; } return
    array; } // 方法3: // 让比较函数随机传回-1或1就可以了 var
    testArray3=[1,2,3,4,5,6,7,8,9,10,22,33,55,77,88,99];
    testArray3.sort{return Math.random; alert;

每段代码前边都有功能注解和参数要求等说明文字,难度不大也就没做更多注释。
为看得清楚,这里依先后顺序做个小目录: 重写window.setTimeout,
理解递归程序的返回规律, 截取长字符串, 取得元素在页面中的绝对位置,
统计、去除重复字符, 把有序的数组元素随机打乱。 复制代码 代码如下: /* 功能:修改
window.setTimeout,使之可以传递参数和对象参数 使用方法: setTimeout */
var __sto = setTimeout; window.setTimeout =
function(callback,timeout,param){ var args = Array.prototype.slice.call;
var _cb = function(){ callback.apply; } __sto; } function aaaaa{
alert; } window.setTimeout; /**//* 功能:理解递归程序的返回规律
对象之间成员的互引用 */ var ninja = { yell: function{ return n > 0 ?
ninja.yell + “a” : “hiy”; } }; alert//结果为:hiyaaaa; var samurai = {
yell: ninja.yell }; //var ninja = {}; // 此处 注释与否 对结果有影响 try
{ alert; } catch{ alert(“Uh, this isn’t good! Where’d ninja.yell go?” );
} /** 功能:截取长字符串 * @param {string} str 要截取的字符串 *
@param {number} size 截取长度 */ var subStr = function{ var curSize =
0, arr = []; for(var i = 0, len = str.length; i < len; i++){
arr.push; if > 255){ curSize += 2; if(size === curSize || size ===
curSize – 1){ return arr.join; } }else{ curSize++; if{ return arr.join;
} } } }; var str = ‘#%*……什么东西1234abcd 还不够长’; alert; alert;
alert; /**//* 功能:取得元素在页面中的绝对位置 @param {string} node
待求位置的DOM元素 */ function getAbsPosition { var t = node.offsetTop;
var l = node.offsetLeft; while (node = node.offsetParent) { t +=
node.offsetTop; l += node.offsetLeft; } alert(“top=” + t + “n” +
“left=” + l); } /**//* 功能:统计、去除重复字符 @param str
需要统计的字符串
说明:常用于字符串中重复字符,或者数组中重复的字母、数字等个数统计。
此处从网上收集两种典型的类型,分别有两种实现方法,其他还有许多变种,从不同角度编写,可搜索学习。
待统计的数据,不论是数组和字符串都可以,只用借助String.split
转换为函数参数要求的类型即可。 */ // 类型一:借助新建对象来保存数据 var
count1 = function { var map = {}, maxCount = 0, maxChar, undefined, i =
str.length; while { var t = str.charAt; map[t] == undefined ? map[t]
= 1 : map[t] += 1; if { maxChar = t; maxCount = map[maxChar]; } }
return “字符:” + maxChar + “次数:” + maxCount; } function s_0 { //
此处参数应为数组类型 var b = {}, c = [], i; for (i = 0; i <
a.length; i++){ if { c[c.length] = a[i], b[a[i]] = true; } }
return c; } // 类型二:正则表达式匹配统计 var count2 = function { var
most = str.split.match; //排列重复字符 most = most.sort { return
a.length – b.length }).pop(); //按出现频繁排序 return most.length + ‘: ‘

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图