js基础知识笔记一

参考笔记网站:https://www.cnblogs.com/yuanziwen/p/8531498.html

1,JavaScript的数据类型都有什么?

基本数据类型:String,Boolean,Number,Undefined, Null (symbol不常用)
引用数据类型:Object(Array,Date,RegExp,Function) 

2,判断数据类型?

四种:typeof  instanceof constructor toString
总结:至于在项目中使用哪个判断,还是要看使用场景,具体的选择,
    一般基本的类型可以选择typeof,引用类型可以使用instanceof

判断某变量是否为数组数据类型?

* 方法一.判断其是否具有“数组性质”,如slice()方法。可自己给该变量定义slice方法,故有时会失效
* 方法二.obj instanceof Array 在某些IE版本中不正确
* 方法三.方法一二皆有漏洞,在ECMA Script5中定义了新方法Array.isArray(), 保证其兼容性,最好的方法如下:
`if(typeof Array.isArray==="undefined")
{
  Array.isArray = function(arg){
        return Object.prototype.toString.call(arg)==="[object Array]"
    }; 
}`

3,运算符的优先级

4,希望获取到页面中所有的checkbox怎么做?(不使用第三方框架)

 `var domList = document.getElementsByTagName(‘input’)
  var checkBoxList = [];
  var len = domList.length;  //缓存到局部变量
  while (len--) {  //使用while的效率会比for循环更高
    if (domList[len].type == ‘checkbox’) {
        checkBoxList.push(domList[len]);
    }
  }`

5,流程语句的格式

第一种if else结构
`if (*condition*){
​	当条件为 true 时执行的代码*
}
else{
​	当条件不为 true 时执行的代码*
}`

  第二种if else if
 `if (*condition*){
  ​	当条件为 true 时执行的代码*
  }
  else if{
  ​	判断第二个是否为true*
  }`

第三种switch case(一般用于有定值得情况下使用)
`switch(n)
  {
  ​    case 1:
  ​        执行代码块 1
  ​        break;
  ​    case 2:
  ​        执行代码块 2
  ​        break;
  ​    default:
  ​        与 case 1 和 case 2 不同时执行的代码
  }`

6,循环格式

  第一种 for循环
`for (语句 1; 语句 2; 语句 3) {
       要执行的代码块
  }
  语句 1 在循环(代码块)开始之前执行。
  语句 2 定义运行循环(代码块)的条件。
  语句 3 会在循环(代码块)每次被执行后执行。
  常写的就是for(var i = 0; i<arr.length; i++){} `

  第二种 while 与 do while循环

     `while (条件) {
​		要执行的代码块
​				}`

     `do {    
​                 要执行的代码块
​                        }while (条件);`

7,关键字

break只能跳出最内层的循环
continue语句用在循环结构内,用于跳出本次循环中剩余的代码,并在表达式的值为真的时候,继续执行下一次循环。

if和while的区别
![](https://img2020.cnblogs.com/blog/2440504/202108/2440504-20210812181335844-887093613.png)

8,创建数组的三种方法

1,构造函数方式
   `var myCars=new Array();
      myCars[0]="奥迪";      
      myCars[1]="宝马";
      myCars[2]="奔驰";`
2,简洁方式(注意:空数组的长度  var myCars=new Array(3);如果是数字是数组的长度,如果是非数字那么则是一个一个元素。)
     `var myCars=new Array("沃尔沃","保时捷","奥拓");`
3,字面量创建(实际企业开发中使用居多)
     `var myCars=["凯迪拉克","宝骏","QQ"];
      var myCars=[];空数组`

9,数组的原生demo

 1,去掉数组中元素的值是0的,重新生成一个新数组
         `var arr5 = [5,0,4,2,0,8,0,9];
            var newArr = [];
            for (var i = 0; i < arr5.length; i++) {
            		if(arr5[i] != 0){
            			//插入新数组
            			newArr[newArr.length] =arr5[i];
            			}
            	}
            console.log(newArr);`

2,在原数组上进行翻转(顶针写法)
     `var arr = [1,2,3,4,5,6];
        //	i 0     4
        //	i 1     3
        //	i 2     2
        console.log(arr);
        for(var i = 0; i < arr.length/2; i++){
        		var temp = arr[i];
        		arr[i] = arr[arr.length - 1 - i];
        		arr[arr.length - 1 - i] = temp;+
        	}
        console.log(arr);`

3,数组去重(非常重要)
     `var arr = [1,2,3,4,1,1,2,1,3,2,4];  //去重完成 [1,2,3,4]
        //数组去重都是在新数组当中去重的;
        var newArr = [];
        var flag = true;
        for(var i = 0; i < arr.length; i++){
        	//从arr数组当中拿数
        	for(var j = 0; j < newArr.length; j++){
        		//拿新的数组当中的值和老数组拿的值进行比较
        		//而且从原数组当中拿的值,必须和新数组当中所有的值比较完成,才知道有没有
        		if(arr[i] == newArr[j]){
        			//代表着新数组内部有这个值;
        			flag = false;
        			break;
        			}
        	}
        	//break出来的,代表新数组当中有这个值
        	if(flag){
        			newArr[newArr.length] = arr[i];
        	}
        	flag = true;//重置标志位
        }					
        console.log(newArr);`

 4,冒泡排序
         ` <script>
  	    var arr = [6,5,3,1,2,4];
    	for (var i = 0; i < arr.length-1; i++) {
    		for(var j = 0;j<arr.length-1-i;j++){
    			if(arr[j] > arr[j+1]){
    				//交换
    			var temp = arr[j];
    			arr[j] = arr[j+1];
    			arr[j+1] = temp;
    					}
    				}				
    			}
    			console.log(arr);
        </script>`

10,数组的方法篇(很重要,简单实用)

                `var arr = [1,2,3,4];
		//数组增删改查
		//从末尾增
		var result = arr.push(100,200,300,[1,2,3]);
		console.log(result);
		console.log(arr);
		//功能:从数组的末尾增加一个或者多个
		//参数:增加的元素
		//返回值:返回加入元素后数组的新长度
		//这个方法对原数组有影响
		
		//从末尾去删
		var result = arr.pop();
		console.log(result);
		console.log(arr);
		//功能:从数组的末尾删除一个
		//参数:无
		//返回值:返回删除的那一个元素
		//这个方法对原数组有影响
		
		//从头部增
		var result = arr.unshift(100,200,300,[1,2,3]);
		console.log(result);
		console.log(arr);
		//功能:从数组的头部增加一个或者多个
		//参数:增加的元素
		//返回值:返回加入元素后数组的新长度
		//这个方法对原数组有影响
		
		//从头部去删
		var result = arr.shift();
		console.log(result);
		console.log(arr);
		//功能:从数组的头部删除一个
		//参数:无
		//返回值:返回删除的那一个元素
		//这个方法对原数组有影响
		
		//增删改一体化
		//这个方法根据参数的不同,有不同的功能
		//这个方法我们大家先当作删除去理解
		//删除
		var result = arr.splice(1,2);
		console.log(result);
		console.log(arr);
		//功能:从数组的任意位置删除任意个元素
		//参数:两个   第一个代表从哪开始,第二个代表删除几个
		//返回值:返回删除的元素组成的新数组
		//这个方法对原数组有影响
		
		//增加
		var result = arr.splice(2,0,400,500,600);
		console.log(result);
		console.log(arr);
		//功能:从数组的任意位置怎加任意多个元素
		//参数:多个   第一个代表从哪开始,第二个代表删除0个,后面的代表新增的元素
		//返回值:返回删除的元素组成的新数组,最终是空数组
		//这个方法对原数组有影响
		
		//修改
		var result = arr.splice(1,1,1000,2000);
		console.log(result);
		console.log(arr);
		//功能:修改数组当中任意的元素
		//参数:多个   第一个代表从哪开始,第二个代表删除几个,后面的代表新增的元素
		//返回值:返回删除的元素组成的新数组
		//这个方法对原数组有影响
		
		//把数组再转化为字符串  和字符串方法 split是一个逆运算
		var result = arr.join('');
		//功能:以指定的字符串为连接符,讲数组元素连接成一个字符串
		//参数:如果不传,默认以逗号为连接符,将元素连接成字符串
		//		如果传的是正常字符串,那么以这个字符串为连接符将元素连接成字符串
		//     如果传的是空串,那么直接将字符串连接成字符串,中间没有任何连接
		//返回值:返回连接好的字符串
		//这个方法对原数组没有影响
		console.log(result);
		console.log(arr);
		
		//翻转数组
		var result = arr.reverse();
		console.log(result);
		console.log(arr);
		console.log(result == arr);
		//功能:翻转数组
		//参数:无
		//返回值:返回翻转后的原数组
		//这个方法影响原数组

		//concat
		var result = arr.concat([100,200,300]);
		console.log(result);
		console.log(arr);
		console.log(arr === result);
		//功能:在数组的末尾拼接元素
		//参数:可以不写,相当于复制一个数组
		//     也可以写一个或者多个值,会把这些值拼接到数组末尾
		//     也可以写数组,会先把数组拆开,把元素拼接到数组末尾
		//返回值:返回拼接好的新数组
		//这个方法对原数组没有影响
			
		//slice
		var result = arr.slice(1,3);
		console.log(result);
		console.log(arr);
		//功能:在数组当中截取部分元素形成新数组
		//参数:和字符串方法slice一致;起始位置和结束位置,不包含结束位置的元素
		//  如果只传一个代表起始位置,一直到结束。两个位置都可以使用负数
		//返回值:返回截取的元素形成的新数组
		//这个方法对原数组没有影响
		
		//可以看也可以不看
		arr = [18,2,10,9,88,66,22];
		
		var result = arr.sort(function(a,b){
			return b - a;
		});
		console.log(result);
		console.log(arr);
		console.log(result === arr);
		//功能:对数组进行排序
		//参数:如果不写,默认把每个元素转化为字符串进行排序(按照Unicode码)
		//	   如果要按照升序降序去排,需要传一个参数是函数
		//   这个函数有两个形参
		
		//返回值:排好序的原数组
		//这个方法对原数组有影响
				
		//valueOf 是Object的原型当中的
		var result = arr.valueOf()
		console.log(result);
		console.log(arr);
		console.log(result === arr);
		//功能:获取数组对象的基本值
		//参数:无
		//返回值:返回原数组,因为数组是非包装对象,所以它是没有基本值
		
		//toString
		var result = arr.toString()
		          console.log(result);
		console.log(arr);
		//功能:将数组对象转化为字符串
		//参数:无
		//返回值:把数组的中括号去掉,其余加引号形成字符串返回`

数组方法参照网站:https://www.cnblogs.com/MythLeige/p/7047273.html
数组去重方法网站:https://www.cnblogs.com/echoyya/p/14555831.html

posted @ 2021-08-12 18:32  拾呓  阅读(43)  评论(0)    收藏  举报