javascript基础--数组,字符串操作,Math函数
数据的操作方法:
1 var arr = [1,2,3,4,5]; 2 3 arr.push(6,7);//可以在数组的最后一位开始添加数列(1+);并返回数组的长度。 4 5 arr.pop();//删除数组的最后一位。并返回那一位数组的内容。 6 7 arr.shift();//删除数组的第0位,并返回那一位数组的内容。 8 9 arr.unshift(-1,0);//从数组的第0位前,添加数列,并返回数组的长度。 10 11 arr.join('');//将每列数组按照指定的符号或者不设置符号(空字符串)隔开每列数组。
字符串的操作方法:
用 splice 实现 push、pop、shift、unshift方法
1 var arr = [3,2]; 2 var arrOpts=(function(){ 3 4 function oArray(arr){ 5 6 if(Array.isArray(arr)){ 7 return true; 8 }else{ 9 return false; 10 } 11 12 } 13 function oPush(arr){ 14 15 if(!oArray(arr)){ 16 return "不是一个数组!"; 17 } 18 19 for(var i=1;i<arguments.length;i++){ 20 arr.splice(arr.length,0,arguments[i]); 21 } 22 23 return arr.length; 24 } 25 26 function oPop(arr){ 27 28 if(!oArray(arr)){ 29 return "不是一个数组!"; 30 } 31 32 return arr.splice(arr.length-1,1)[0]; 33 } 34 35 function oUnshift(arr){ 36 if(!oArray(arr)){ 37 return "不是一个数组!"; 38 } 39 if(arguments.length>=2){ 40 for(var i = arguments.length-1;i>0;i--){ 41 arr.splice(0,0,arguments[i]); 42 } 43 } 44 return arr.length; 45 } 46 47 function oShift(arr){ 48 if(!oArray(arr)){ 49 return "不是一个数组!"; 50 } 51 return arr.splice(0,1)[0]; 52 } 53 54 return { 55 oPush:oPush, 56 oPop:oPop, 57 oUnshift:oUnshift, 58 oShift:oShift 59 } 60 61 })();
拼接字符串操作:
1 var prod = { name:'女装', styles:['短款','冬季','春装'] }; 2 3 function getTpl(data){ 4 5 var html =[]; html.push('<dl class="product">'); 6 7 html.push('<dt>'+data.name+'</dt>'); 8 9 for(var i =0;i<data.styles.length;i++){ 10 11 html.push('<dd>'+data.styles[i]+'</dd>'); 12 13 } 14 15 html.push('</dl>'); 16 17 return html.join(''); 18 19 } 20 21 var result =getTpl(prod); 22 23 console.log(result);//
写一个find函数,实现下面的功能
1 var arr = ['test',2,1.5,false]; 2 function find(arr,ele){ 3 for(var i=0;i<arr.length;i++){ 4 if(arr[i] === ele){ 5 return i; 6 } 7 } 8 return -1; 9 } 10 find(arr, "test") // 0 11 find(arr, 2) // 1 12 find(arr, 0) // -1
写一个函数过滤数组中,不是数字的元素。
1 var arr=["a",1,"b",2]; 2 3 function filterNumeric(arr){ 4 var fooArr = []; 5 for(var i=0;i<arr.length;i++){ 6 if(typeof arr[i] === 'number'){ 7 fooArr.push(arr[i]); 8 } 9 } 10 return fooArr; 11 }
对象obj有个className属性,里面的值为的是空格分割的字符串(和html元素的class特性类似),写addClass、removeClass函数,有如下功能:
1 var obj = {className:'open menu'}; 2 3 var classOpt = (function(){ 4 5 //判断是否有这个class 6 function hasClass(obj,cls){ 7 8 if( obj.className && arguments.length === 2){ 9 var fooArr = obj.className.split(' '); 10 for(var i=0;i<fooArr.length;i++){ 11 if(cls === fooArr[i]){ 12 return fooArr;//如果有这个class,返回 13 } 14 } 15 16 return false;//没有返回false 17 } 18 } 19 20 function addClass(obj,cls){ 21 22 if(hasClass(obj,cls)){ 23 return 'class已经存在,无法添加'; 24 } 25 26 return obj.className += ' '+cls; 27 } 28 29 function removeClass(obj,cls){ 30 if(hasClass(obj,cls)){ 31 var fooArr = obj.className.split(' '); 32 for(var i=0;i<fooArr.length;i++){ 33 if(fooArr[i]===cls){ 34 fooArr.splice(i,1); 35 } 36 } 37 return obj.className = fooArr.join(' '); 38 console.log(fooArr); 39 } 40 return ''; 41 } 42 43 return { 44 addClass:addClass, 45 removeClass:removeClass 46 } 47 })();
写一个camelize函数,把my-short-string形式的字符串转化成myShortString形式的字符串,如 (***)
function camelize(str){ var fooArr = str.split('-'); if(fooArr.length>=2){ for(var i=1;i<fooArr.length;i++){ fooArr[i] = fooArr[i].replace(fooArr[i][0],fooArr[i][0].toUpperCase()); } } return fooArr.join(''); }
写一个函数filterNumericInPlace
,过滤数组中的数字,删除非数字 (****)
1 function filterNumericInplace(arr){ 2 for(var i=0;i<arr.length;i++){ 3 if(typeof arr[i] !== 'number'){ 4 arr.splice(i,1); 5 i--; 6 } 7 } 8 }//对原数组进行操作,不返回值。
写一个ageSort
函数实现如下功能 (***)
1 function ageSort(arr){ 2 arr.sort(numSort); 3 function numSort(a,b){ 4 return a.age - b.age; 5 } 6 }
写一个filter(arr, func)
函数用于过滤数组,接受两个参数,第一个是要处理的数组,第二个参数是回调函数(回调函数遍历接受每一个数组元素,当函数返回true时保留该元素,否则删除该元素)。实现如下功能: (****)
1 arr = ["a",3,4,true, -1, 2, "b"]; 2 function isNum(elem){ 3 return typeof elem ==='number'; 4 } 5 function filter(arr,callback){ 6 for(var i=0;i<arr.length;i++){ 7 if(!callback(arr[i])){ 8 arr.splice(i,1); 9 i--; 10 } 11 } 12 }// 在filter函数中遍历数组,之后将callback函数返回一个布尔值,进行if判断,判断false即不符合条件的就删除该元素。
字符串操作
写一个 ucFirst
函数,返回第一个字母为大写的字符 (***)
1 var s1 = 'hello'; 2 function ucFirst(str){ 3 return str=str.replace(str[0],str[0].toUpperCase()); 4 }
写一个函数truncate(str, maxlength)
, 如果str
的长度大于maxlength
,会把str
截断到maxlength
长,并加上...
,如 (****)
1 var s1 = "hello, this is hunger valley"; 2 var s2 = "This is a string"; 3 function truncate(str,maxlen){ 4 if(arguments.length=2){ 5 if(str.length >= maxlen){ 6 return str.slice(0,maxlen)+'...'; 7 } 8 } 9 }
数学函数
写一个函数limit2
,保留数字小数点后两位,四舍五入, 如: (**)
1 function limit2(num){ 2 return Math.round(num*100)/100; 3 }
写一个函数,获取从min到max之间的随机数,包括min不包括max (***)
function MinToMaxRandom(min,max){ return Math.random()*(max-min) + min; }
写一个函数,获取从min都max之间的随机整数,包括min包括max (***)
function randomInt(min,max){ return Math.floor(Math.random()*(max-min+1) + min); }//Math.floor()向下取整,Math.random()0~1随机数,包含0不包含1
写一个函数,获取一个随机数组,数组中元素为长度为len,最小值为min,最大值为max(包括)的随机数 (***)
function randomArrayMinToMax(min, max, len) { var arr = []; for (var i = 0; i < len; i++) { arr.push(Math.round((max - min) * Math.random() + min)); } return arr; } //这里的随机数是随机整数