js 经常使用的函数重点
sort 排序函数 没有返回值,对原数组进行操作
//sort 对数组进行排序,不写参数 // arr1=[1,3,5,9,7,4,2,10]; // //使用sort进行排序,如果不写参数,按照字母的顺序进行排序,但是对数值会有点问题 // arr1.sort(); // console.log(arr1); //sort 对数组进行排序 ,写参数 回调函数该函数要比较两个值,然后返回一个用于说明两个值的相对顺序的数字 //若a<b 在排序后的数组中,a应该出现在b之前,则返回一个小于0的值 //若a=b 在返回0 //若a>b 则返回一个大于0的值 arr1=[1,3,9,5,6,7,10,2]; //这里使用a-b是从小到大排序,b-a侧是从大到小排序 // arr1.sort(function (a,b){return a-b}); 返回 1,2,3,5,6,7,9,10 arr1.sort(function (a,b){return b-a}); //返回 10,9,7,6,5,3,2,1 console.log(arr1);
indexof 检索字符串 没检索到 返回-1
/*indexof函数 返回number 没找到 返回-1 indexof有两个参数,第一个参数 要检索的数值或者字符串必选,第二个参数 可选,从索引第几位开始查找 当第二个参数选择时候,返回检索字符或数值出现的索引位置 */ var a='sdfsfs'; //检索a字符串,中是否有s 从第二位开始找 console.log(a.indexOf('s',2)); //返回3
利用indexOf函数 给数组去重复
<script> arr1=[1,3,8,9,4,8,1,6,4,5]; arr2=[]; for(var i=0;i<arr1.length;i++){ if(arr2.indexOf(arr1[i])>-1){ continue; } arr2.push(arr1[i]) } console.log(arr2); </script>
slice函数
arrayObject.slice(start ,end) 此方法不会对原数组产生影响,会返回一个新数组。
<script> arr=[1,4,5,9,8,7,5]; //slice 不写参数 默认是将元数组复制并返回 // arr1=arr.slice(); // arr[0]=12; // console.log(arr1,arr); //slice 写有一个参数,表示,从数组参数索引开始截取至数组的尾部,并返回新数组 // arr1=arr.slice(3); // console.log(arr1); //输出 9,8,7,5 //slice写有2个参数 表示从数组参数索引开始窃取至第二个参数索引,并返回新数组 arr1=arr.slice(2,3); console.log(arr1); //返回数组,值为5 </script
splice()函数
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
默认不写参数是将原数组删除并将删除的项目在返回给元数组(复制数组)
<script> arr=[1,4,5,9,8,7,5]; //splice只写1个参数 表示从索引0开始 删除1个元素,并改变原数组 // arr.splice(1); // console.log(arr); //返回1 //splice两个参数表示 从原数组中索引为0开始 删除一个元素 // arr.splice(0,1); // console.log(arr); //返回 4,5,9,8,7,5 // //如果第二个参数是0 表示不删除任何元素 // arr.splice(1,0); // console.log(arr); //splice 写有3个以上的函数,表示从原数组中删除从索引第一个参数开始 删除第二个参数的元素 //,并且用第三个新元素来代替删除的元素 arr.splice(1,0,'中国','日本'); console.log(arr); //返回 1 中国 日本 9875 注意 如果第二位为0 表示不删除 并且添加 </script>
join函数
用于把数组中的所有元素放入一个字符串。参数可选,选择使用什么来分割 返回字符串
arr=[1,4,5,9,8,7,5]; //join函数 不写参数 默认是以数组的逗号分隔 // console.log(arr.join()); //返回1,4,5,9,8,7,5 //join 参数- 表示以横杠分割数组 返回字符串 console.log(arr.join('-')); //1-4-5-9-8-7-5
concat函数
用于连接两个数组或数值,返回连接数组的副本(引用地址一样)。
<script> arr=[1,4,5,9,8,7,5]; arr1=[3,5,8] // //concat函数 用于两个数组的连接,返回连接数组的副本,不改变原数组 // //如果arr索引0 值改变,使用concat连接数组的返回 也会改变 // arr[0]=10; // console.log(arr.concat(arr1)); //如果不写参数 返回一个arr数组的副本 console.log(arr.concat()); //concat的参数也可以是具体的值,如3 5 6 可以是多个 console.log(arr.concat(3,5,6)); //返回1,4,5,9,8,7,5,3,5,6 </script>
from 函数 属于es6 中新增的类方法,把对象或者转化成 数组
var str="zhonghaos"; console.log(str[0]); //返回z console.log(Array.from(str)); //返回一个zhonguohaos 的数组,字符串也属于对象
函数中的argumnts
show(1,2); function show(a,b){ //返回arguments 对象 console.log(arguments); //返回arguments对象的方法体 console.log(arguments.callee); //把arguments 对象抓换成数组, var arr=Array.from(arguments); //返回该参数共有几个参数 console.log(arguments.length); //返回aruments对象转换数组后,每个参数的值 console.log(arr[0],arr[1]); } </script>
split 函数
split() 方法用于把一个字符串分割成字符串数组。 和join 正好相反,join是将数组分割成字符串
语法
stringObject.split(separator,howmany)
var str="zhonghaos"; //以空格的形式分割字符串并返回数组 ["z", "h", "o", "n", "g", "h", "a", "o", "s"] console.log(str.split("")); str1="a,b,er,hg,sd,s"; console.log(str1.split(",")); ["a", "b", "er", "hg", "sd", "s"]
//需求 //把上面的url返回对象形式 {id:1356,user:admin,password:123456} var url="www.badu.com:8082?id=1356&user=admin&password=123456"; //我们只适用id=1356&user=admin&password=123456 所以数组从0开始 用第一个 var arr=url.split("?")[1]; var str1=arr.split("&"); //返回["id=1356", "user=admin", "password=123456"] var obj={}; for(i=0;i<str1.length;i++){ var arr1=str1[i].split("="); obj[arr1[0]]=arr1[1]; } console.log(obj);
//案例 封装成方法 function getObject(url){ var obj={}; var arr=url.split("?")[1].split("&"); for(i=0;i<arr.length;i++){ var arr1=arr[i].split("="); obj[arr1[0]]=arr1[1]; } return obj; } var o=getObject("www.badu.com:8082?id=1356&user=admin&password=123456"); console.log(o);