JavaScript中的数组、字符串和数学函数

来源:互联网 发布:行知学园保证班 编辑:程序博客网 时间:2024/05/18 01:50

数组中的方法的作用:

  • push():在数组的最后插入元素, 返回添加元素后数组的长度,括号内传入要插入的元素,若要插入多个,就用逗号隔开。
  • pop():删除数组的最后一位元素,并返回被删除元素的值。
  • shift()删除数组的第一个元素,并返回被删除元素的值。
  • unshift()在数组最前面插入元素,并返回插入元素后数组的长度,若要插入多个元素,则中间用逗号隔开。
  • join() 将数组拼接成字符串,并使用join中传入的值将前后两个元素隔开,返回拼接后的字符串,原数组不变。
  • split() 根据传入参数将字符串拆分成数组,返回拆分后的数组,原字符串不变。

使用splice()实现以下方法:

  1. push
    function pushes(){for(var i = 1;i < arguments.length;i++){ arguments[0].splice(arguments[0].length,0,arguments[i]);} // 通过遍历arguments将传入的每一个元素取出,并插入到数组的末尾。return arguments[0]; // 返回经过修改的数组的值}
  2. pop
    function pop(arr){return arr.splice(arr.length-1,1)[0]; // 通过调用splice方法将数组最后一个元素删除,返回的是一个数组,通过索引将其取出}
  3. shift
    function shift(arr){return arr.splice(0,1)[0];// 通过调用splice方法将数组第一个元素删除,返回的是一个数组,通过索引将其取出}
  4. unshift
    function unshift(){for(var i = arguments.length - 1;i > 0;i--){ arguments[0].splice(0,0,arguments[i]);} // 通过遍历arguments将传入的每一个元素取出,并插入到数组的首位,首先取出的是最后一位,才能保证顺序。return arguments[0]; // 返回修改过的数组的值}
    *使用数组拼接字符串:

    要拼接的字符串:
    <dl class="product"><dt>女装</dt><dd>短款</dd><dd>冬季</dd><dd>春装</dd></dl>
    实现函数:
    function getTpl(data){var dl = '<dl class="product">';var dt = "<dt>" + prod.name + "</dt>";var dd = "";for(var i = 0;i < prod.styles.length;i++){ dd += "<dd>" + prod.styles[i] + "</dd>";}var dlf = '</dl>';return dl + dt + dd + dlf; };

定义find函数,查找数组索引值,若未能找到,则返回-1:

function find(arr,a){ for(var i = 1;i < arr.length;i++){ if(arr[i] == a){ return i; } } return -1;}

写一个函数filterNumeric,把数组 arr 中的数字过滤出来赋值给新数组newarr, 原数组arr不变

function filterNumberic(arr){ var narr = []; for(var i = 0;i < arr.length;i++){ if(typeof(arr[i]) === "number"){ // 将原数组中每一个元素取出,进行判断是否为number narr.push(arr[i]); // 若是,则将其添加到新数组中 } } return narr;}

写出类似addClass,removeClass的函数

addClass():
function addClass(obj,a){ var arr = obj.className.split(' '); for(var i = 0;i < arr.length;){ if(a === arr[i]){ return "className: " + obj.className; } } arr.push(a); obj.className = arr.join(" "); return "className: " + obj.className;}
removeClass:
function removeClass(obj,a){ var arr = obj.className.split(' '); for(var i = 0;i < arr.length;){ if(a === arr[i]){ arr.splice(i,1); obj.className = arr.join(" "); return "className: " + obj.className; } } return "className: " + obj.className;}

一个将字符串中间横杠去掉,将后面单词首字母大写的函数

function camelize(a){ var arr = a.split("-"); // 将字符串转换为数组,以"-"相隔 for(var i = 1;i < arr.length;i++){ arr[i] = arr[i].toUpperCase() + arr[i].substr(1); // 从第二个开始遍历,将首字母大写 } return arr.join("") // 将首字母大写后的数组重新拼接成字符串}

代码输出问题

arr = ["a", "b"];arr.push( function() { alert(console.log('hello hunger valley')) } ); // 在数组的最后增加了一个一名函数arr[arr.length-1]() //

最后一行代码的意思即是arr[2](),这行代码的意思就是去执行上面的匿名函数,由于匿名函数没有设置返回值,将函数中的console.log输出之后,弹窗结果为undefined,并且没有返回值的函数默认返回值为undefined。

写一个函数,过滤原数组中的数字,删除非数字,在原数组中操作:

function filterNumbericInPlace(arr){ for(var i = 0;i < arr.length;i++){ if(typeof(arr[i]) !== "number"){ arr.splice(i,1); // 遍历其中所有元素,将不是数字的删除 i--; // 若执行了删除命令,则索引值整体会往前移动一位,这时将索引i也相应前移一位 } }} >>源码

使用函数实现将数组按其中的age从小到大排列

function ageSort(a,b,c){ var arr = [a,b,c]; // 将传入的元素整合成一个数组 arr.sort(function(p1,p2){ return p1.age > p2.age; // 使用对数组中数字排序的方式,按age的大小排列 }) return arr;}

写一个filter(arr, func)函数用于过滤数组

function filter(arr,func){ for(var i = 0;i < arr.length;i++){ if(func(arr[i]) !== true){ arr.splice(i,1); // 如果不是指定类型,则删除该元素 i--; // 由于删除元素会让索引值向前移动,则将i向前移动一位 } } return arr; // 返回删除不符合元素后的arr}function isNumeric (el){ return typeof el === 'number'; // 判断是否为number的函数}function isStr(el){ return typeof el === "string"; // 判断是否为string的函数}function isNagtive(el){ return typeof el === "number"&& el === Math.abs(el); // 判断是否为正整数}

字符串:

一个将字符串首字母大写的函数

function ucFirst(str){ return str[0].toUpperCase() + str.substr(1);}

定义一个函数,判断字符串长度,若长度超过给定长度,则返回前十位加"...",否则返回原字符串:

function truncate(str,num){ if(str.length > num){ // 判断字符串长度 return str.substr(0,10) + "..."; // 若长度超过10,返回前十位加"..." }else{ return str; // 否则返回原字符串 }}

数学函数

写一个函数,获取从min到max之间的随机整数,包括min不包括max

function ran(minNum,maxNum){ return Math.floor((Math.random()*(maxNum - minNum) + minNum));}

写一个函数,获取从min都max之间的随机整数,包括min包括max

function ran(minNum,maxNum){ return Math.round((Math.random()*(maxNum - minNum) + minNum));}

写一个函数,获取一个随机数组,数组中元素的长度为len,最小值为min,最大值为max(包括)的随机整数

function randomArr(len,min,max){ var arr = []; // 定义一个空数组,以便传入得到的值 for(var i = 0;i < len;i++){ arr.push(Math.floor(Math.random()*(max - min + 1) + min)); } // 利用随机数和向下取整,获取一个范围内的值,并将其加入数组最后,通过遍历获取对应的个数 return arr; // 返回遍历完成后的数组}

写一个函数,生成一个长度为 n 的随机字符串,字符串字符的取值范围包括0到9,a到 z,A到Z。

function getRandstr(len){ res = ""; // 定义一个空字符串以接收传入的字符串 var str = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; for(var i = 0;i < len;i++){ res += str[Math.floor(Math.random() * str.length)]; // 通过随机数的方式获得随机的索引值,向下取整后将索引值对应的字符串取出,并拼接到str上面。 } return res; // 返回拼接完成的随机字符串}

0 0