您的位置:首页 > Web前端 > JavaScript

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

2017-02-18 22:56 393 查看


数组中的方法的作用:

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


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

push
function pushes(){for(var i = 1;i < arguments.length;i++){
arguments[0].splice(arguments[0].length,0,arguments[i]);} // 通过遍历arguments将传入的每一个元素取出,并插入到数组的末尾。return arguments[0]; // 返回经过修改的数组的值}

pop
function pop(arr){return arr.splice(arr.length-1,1)[0]; //
通过调用splice方法将数组最后一个元素删除,返回的是一个数组,通过索引将其取出}

shift
function shift(arr){return arr.splice(0,1)[0];// 通过调用splice方法将数组第一个元素删除,返回的是一个数组,通过索引将其取出}

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; // 返回拼接完成的随机字符串}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: