WEB_Array数组的api和循环
1.do while循环
var a = 1; do { console.log(a); a++; } while (a < 10);//先执行 然后再进行判断 至少执行一次 while(a < 10){//先进行判断 ,然后再执行 console.log(a); a++; }
2.arr数组
// 数组 : 相关的数据集合
var arr = [1,2,3,4]; //数组的直接量
// var arr2 = new Array();// 通过构造函数
console.log(arr.length);
console.log(arr.toString());//输出arr数组的值
3.数组求总和,平均值 最大值, 最小值
//求总和 ,平均值 var arr = [80,90,100,110]; var sum=0; for(var i=0;i<arr.length;i++){ sum += arr[i]; } console.log(sum);//总和 console.log(parseInt(sum/arr.length));// 平均值 console.log("---------------"); //求arr最大值和最小值 // var indexMin = arr[0];//设置为最小值 // for(var i=0;i<arr.length;i++){ // if(arr[i]<indexMin){ // indexMin = arr[i]; // } // } // console.log(indexMin); var indexMax = arr[0]; for(var i=0;i<arr.length;i++){ if(arr[i]>indexMax){ indexMax = arr[i]; } } console.log(indexMax); // 给一个数组赋值元素 1-100 var arr2 = []; for(var i=1; i<=100;i++){ arr2[i-1]=i; } console.log(arr2);
4. push、 pop、shift、unshift、splice、clice、concat、join、reverse、sort
//数组的api:应用程序编程接口
//push 添加
//pop
//shift
//unshift
var arr = [1,2,3,4,5,6];
// arr.push(7); //向数组末尾添加元素一个或多个元素,该方法会将数组的新长度返回
// console.log(arr);
// arr.pop(); //该方法可以删除数组的[最后元素,] 并且返回该元素
// console.log(arr.pop());
// console.log(arr);
arr.shift();// 该方法可以删除数组的[第一个元素],返回被删除的元素
console.log(arr);
// arr.unshift(0,0);// 向数组开头添加一个或者多个元素,返回数组新的长度
var arr2 = [1,2,3,4,5,6];
arr2.splice(0,1,5); // 第一个参数是从某位置开始,第二个参数是删除几个,第三个参数是添加一个或则多个,如果第二个参数为0,着直接在开始位置添加
console.log(arr2);
var arr3 = [1,2,3];
arr3.slice(0,1);// 1 start开始,包括end 截取 不会影响原数组
//concat() 合并2个数组,或者多个数组
//不会对原数组产生影响
var arr = [1,2,3];
var arr2 = [4,5,6];
var arr3 = [7,8,9];
var result = arr.concat(arr2,arr3,10,11);
console.log(result);
/*
join()
该方法可以将数组转换为一个字符串
该方法不会对原数组产生影响,而是将转换后的字符串作为结果返回
在join()中可以指定一个字符串作为参数,这个字符串将会成为数组中元素的链接符
*/
var result1 = arr.join("+");
console.log(result1);
/*
reverse();
该方法用来反转数组,(前边去后边 后边去前边)
该方法会直接修改原数组
*/
var result2 = arr.reverse();
console.log(result2);
/*
sort()
可以用来对数组的元素进行排序
会影响原数组,默认的会按照Unicode编码进行排序
如果是纯数字排序,会按照Unicode的编码排序,会出错。
所有对数字进行排序,可能得到错误的结果
我们可以给sort() 添加一个回调函数,来指定排序规则
回调函数中需要定义两个形参
浏览器将会分别使用数组中元素作为实参去调用回调函数
使用哪个元素调用不稳定,但是肯定是在数组a一定在b前边
浏览器会根据回调函数的返回值来决定元素的位置
如果大于0,则调换位子
如果小于0,则不变位子
如果等于0,会认为2个数相等,不变位子
*/
var arr4 = [2,5,1,0,5,8,7];
// var result3 = arr4.sort();
// console.log(result3);
arr4.sort(function(a,b){
return a-b;
});
console.log(arr4);
5. 去重 forEach
var arr = [1,2,3,4,5,2,3,4,2,1,4]; // function qc(arr){ // for(var i=0;i<arr.length;i++){ // for(var j=i+1;j<arr.length;j++){ // if(arr[i]==arr[j]){ // arr.splice(j,1); // //当删除了当前j所在的元素以后,后边的元素会自动补位, // //此时不会比较这个元素,我们需在比较一次j所在的位置元素 // //使j-- // j--; // } // } // } // console.log(arr); // } // qc(arr); function noRepeat(arr){ var arr2 = []; for(var i=0; i<arr.length;i++){ if(arr2.indexOf(arr[i]) === -1){ arr2[arr2.length] = arr[i]; } } return arr2; } var arr2 = noRepeat(arr); console.log(arr2); //forEach() 高阶函数--函数的参数是一个函数,或者返回值是一个函数 arr.forEach(function(item, index, array){ console.log("item:"+item+"index:"+index); }); // forEach源码 function forEach(fn,arr){ for(var i=0;i<arr.length;i++){ fn(arr[i], i, arr); } } forEach(function(item, index, arr){ console.log(item); },arr);
6. 数组的一些方法归类:
// concat join reverse some every map filter reduce sort var arr = [1,2,3,4,60,5,2,31]; //some 判断是否第一个有满足条件的元素 // 参数: 和forEach一样 // 返回值是一个布尔值,找到满足条件的第一个元素,则终止循环, 返回true, 否则返回false var bool = arr.some(function(v, i, arr){ return v > 60; }); console.log(bool); //filter: 过滤 // 参数和forEach一样 // 把满足条件的元素筛选出来 // 返回值是一个新的数组,不会对原数组产生影响 //every // 参数和forEach一样 // 判断每一个元素有满足条件的元素 // 返回值是一个布尔值,找到都满足, 返回true, 否则返回false //map // 功能:对原数组遍历(迭代) // 参数和forEach一样 // 返回值:根据原数组产生长度一样的新数组,新数组的没一个元素有原数组对应的元素带入函数参数后的返回值 //和她一样 // for(var i=0;i<arr.length;i++){ // arr[i] = arr[i]+1; // } // console.log(arr);
7.Reduce数组api详细分析和实例:https://www.jianshu.com/p/e375ba1cfc47
8. split返回指定参数出现的个数练习
// var str = "25hhh222hhh2h";
// var index = 0;
// while("h" === str[str.indexOf("h")]){
// str = str.slice(str.indexOf("h")+1);
// index ++;
// }
// console.log(index);
// let num = 0;
// let str = "25hhh222hhh"ZCOD59214404HC8E0479E0E8EE79692C
// while(str.indexOf('h')!== -1) {
// str = str.slice(str.indexOf('h') + 1);
// num += 1
// }
// console.log(num);
var str = "25hh222hhkjglhsjwut";
var num = str.split('h').length-1;
console.log(str.split('h'));
console.log(num);
/*
split('x'); 会返回分割后的数组, x的个数就是分割数组的长度-1
*/
console.log('-------------------------');
var str2 = 'have a nice day';
console.log(str2.split("a").length);
console.log(str2.split("a"));
9. Math的方法
//Math方法
// Math.abs() 绝对值
// Math.ceil(9.1) // 10 向上取整
// Math.ceil(-9.1) // -9
// Math.floor(9.1) // 9 向下取整
// Math.floor(-9.1) // -10
// Math.max(10,2,3,45,2); //45
// Math.min(10,2,3,45,2); //2
// Math.min(...[10,2,3,45,2]); 2 //ES6的展开运算符
// Math.pow(2,4); 2的4次方 16
// Math.sqrt(16); 4 平方根
// Math.round(9.5); //10 四舍五入
// Math.random(); //随机数 0-1的随机值
// 设置指定范围的随机数
设置 1-9的随机数
// 思路 比如3就是大数 大数 = 大数 - 小数 + 1 小数 = 小数
Math.floor(Math.random*大数 + 小数);
Math.floor(Math.random()*9 + 1)
10.倒计时练习
setInterval(function(){
var startTime = new Date(); //获取当前时间
var endTime = new Date("2020/4/17");
var count = (startTime.getTime() - endTime.getTime())/1000;
var Day = parseInt(count / (24*60*60));
var Hours = parseInt(count / (60*60)%24);
var minute = parseInt(count / 60%60);
var seconds = parseInt(count %60);
console.log(Day+"天"+Hours+"小时"+minute+"分钟"+seconds+"秒");
},1000);
11.

浙公网安备 33010602011771号