javascript基础
JavaScript入门
JavaScript分为三个部分:
1,ECMAScript 标准-----js的基本语法
2,DOM------------Document Object Model 文档对象类型
3,BOM----------Browser Object Model 浏览器对象模型
JavaScript是什么?
是一门脚本语言
是一门解释性语言
是一门动态类型的语言
是一本基于对象的语言
是一门弱类型的语言
JavaScript代码的书写注意:
1,在一对script的标签中有错误的js代码,那么该错误代码后面的js代码不会执行
2,第一队script标签中有错误,不会影响后面的script标签中的js代码
3,script标签中可以写什么内容 type="text/javascript"是标准写法。或者写Language="JavaScript"都可以。但是目前在我们HTML页面中,type和Language都可以省略
4,有可能会同时出现这种情况:script标签中可能会同时出现type和Language的写法
5,script标签在页面中可以出现多对
6,script标签一般放在body标签的最后,有的时候会在head标签中
7,如果script标签是引入的外部js文件的作用,那么这对标签中不能写任何的js代码,如果要写,重新写一堆script标签,里面写代码
JavaScript中的注释:
1,单行注释: //
2,多行注册: /**/
JavaScript中变量和数据类型
变量
js中声明变量都用 var 存储数据,数据都应该有对应的数据类型
变量声明(有var 有变量名字,没有值)
变量声明的方式:var 变量名字;
变量初始化(有var 有变量名字 有值)
变量声明并初始化的方式:var 变量名字 = 值;
变量命名的注意:
js中的每一行代码结束都应该有分号;(写代码有分号的习惯)
js中的大小写是区分的 :var N =10;n和N不是一回事
js中的字符串可以使用单引号,也可以使用双引号。
数据类型
原始数据类型:number、string、boolean、null、undefined、object
number 数字类型(整数和小数)
string 字符串类型(值一般都用单引号或者双引号括起来)“34”
boolean 布尔类型(值只有两个 true真,false假)
null 空类型 值只有一个null,一个对象指向为空了,此时可以赋值为null
undefined :未定义,值只有一个undefined
什么情况下是undefined:
1,变量声明了但没有赋值,结果是undefined
2,函数没有明确返回值,如果接收了结果也是undefined
如果一个变量的结果是undefined和一个数字进行计算,结果NaN不是一个数字,没有意义
object 对象
类型转换
1,其他类型转number型
1.parseInt();//转整数

1 console.log(parseInt("10"));//10 2 console.log(parseInt("10afrswfdsf"));//10 3 console.log(parseInt("g10"));//NaN 4 console.log(parseInt("1fds0"));//1 5 console.log(parseInt("10.98"));//10 6 console.log(parseInt("10.98fdsfd"));//10
2,parseFloat();//转小数

1 console.log(parseFloat("10"));//10 2 console.log(parseFloat("10afrswfdsf"));//10 3 console.log(parseFloat("g10"));//NaN 4 console.log(parseFloat("1fds0"));//1 5 console.log(parseFloat("10.98"));//10.98 6 console.log(parseFloat("10.98fdsfd"));//10.98
3,number();//转数字

1 console.log(Number("10"));//10 2 console.log(Number("10afrswfdsf"));//NaN 3 console.log(Number("g10"));//NaN 4 console.log(Number("1fds0"));//NaN 5 console.log(Number("10.98"));//10.98 6 console.log(Number("10.98fdsfd"));//NaN
三者之间的差别:
想要转整数用parseInt()。想要转小数用parseFloat()。想要转数字:Number();但要比上面的两种方式严格。
2,其他类型转string型
1, .toString();// 方法

1 var num=10; 2 console.log(num.toString());//字符串类型
2,String();//方法

1 var num1=20; 2 console.log(String(num1));
两者之间的差别:
如果变量有意义调用.toString()使用转换
如果变量没有意义使用String()转换
3,其他类型转boolean型
Boolean(其他类型);

1 console.log(Boolean(1));//true 2 console.log(Boolean(0));//false 3 console.log(Boolean(11));//true 4 console.log(Boolean(-10));//true 5 console.log(Boolean("哈哈"));//true 6 console.log(Boolean(""));//false 7 console.log(Boolean(null));//false 8 console.log(Boolean(undefined));//false
JavaScript中的函数
函数定义的两种方式:
第一种:直接定义函数
function 函数名(参数){ 函数体 }

1 // 函数定义 2 function f1() { 3 console.log("哈哈,我又变帅了"); 4 } 5 // 函数调用 6 f1();
第二种:函数表达式
var 变量名 = function(参数){函数体}

1 // 函数定义 2 var f2=function () { 3 console.log("真帅"); 4 }; 5 // 函数调用 6 f2();
JavaScript中的预解析
预解析:就是在解析代码之前把当前作用域下var和function关键字的事先声明,并在内存中安排好。然后再从上到下执行js语句。
预解析只会发生在通过var定义的变量和function上。
预解析做什么事情?
把变量的声明提前了----提前到当前所在的作用域最前面。只是声明提前,不会提前定义
函数声明也会被提前----提前到当前所在的作用域最上面,并且该函数也会被提前定义,及在改函数上面调用该函数也不会报错
注意:对于函数表达式的函数,并不会提前定义,只会提前声明了该函数表达式。
预解析的案例:

1 // 变量声明提前 2 //把变量的声明提前了 3 console.log(num);//undefined 4 var num =10; 5 6 ———————————————————————————————— 7 // 函数声明提前 8 f1();// 哈哈哈 9 function f1() { 10 console.log("哈哈哈"); 11 } 12 13 14 ------------------------------------------------------------------------- 15 函数声明比较特殊的一个例子 16 f1(); 17 console.log(c);//9 18 console.log(b);//9 19 console.log(a);//报错 20 21 function f1() { 22 var a = b = c = 9; 23 console.log(a);//9 24 console.log(b);//9 25 console.log(c);//9 26 } 27 **********解析 28 原因: 29 function f1() { 30 var a;//局部变量 31 a=9; 32 //隐式全局变量 33 b=9; 34 c=9; 35 console.log(a);//9 36 console.log(b);//9 37 console.log(c);//9 38 } 39 f1(); 40 console.log(c);//9 41 console.log(b);//9 42 console.log(a);//报错 43 44 45 46 47 ------------------------------------------------------------- 48 //函数表达式 49 f1();//报错 50 51 var f1 = function () { 52 console.log(num); 53 var num=10; 54 }
JavaScript中的对象
创建对象的三种方式:
1,调用系统的构造函数创建对象:var 变量名 = new Object( );

1 //实例化对象 2 var obj = new Object(); 3 //对象有特征------属性和行为------方法 4 5 //添加属性-----如何添加属性? 对象.名字=值; 6 obj.name = "小苏"; 7 obj.age = 18; 8 obj.sex = "女"; 9 obj.eat = function () { 10 console.log("喜欢吃"); 11 }; 12 obj.play =function () { 13 console.log("喜欢玩"); 14 }; 15 16 console.log(obj.name);//获取输出 17 console.log(obj.age); 18 console.log(obj.sex); 19 obj.eat(); 20 obj.play();
2,自定义构造函数创建对象(结合第一种的需求通过工厂模式创建对象)
1,工厂模式创建对象

1 //一次性创建多个对象:把创建对象的代码封装在一个函数中 2 function createObject(name,age) { 3 var obj = new Object(); 4 // obj.name = "小芳"; 5 obj.name=name; 6 // obj.age=10; 7 obj.age=age; 8 obj.sayHi = function () { 9 console.log("我叫"+this.name+"今年"+this.age+"岁了"); 10 }; 11 return obj; 12 } 13 14 //创建人对象 15 var par1=createObject("小张",20); 16 par1.sayHi(); 17 var par2=createObject("小王",30); 18 par2.sayHi();
2,自定义构造函数的方式创建对象
自定义构造函数创建对象,我自己定义一个构造函数,自定义构造函数,创建对象
函数和构造函数的区别:名字是不是大写(首字母是大写)

1 function Person() { 2 this.name="小明"; 3 this.age=10; 4 this.sayHi=function () { 5 console.log("哈哈"); 6 } 7 } 8 9 //自定义构造函数创建对象:先自定义一个构造函数,创建对象 10 var per = new Person(); 11 console.log(per.name); 12 console.log(per.age); 13 per.sayHi();
3,字面量的方式
字面量创建对象的缺陷:一次性的对象

1 //字面量方式创建对象 2 var obj = {}; 3 obj.name = "小白"; 4 obj.age = 10; 5 obj.sayHi = function () { 6 console.log("我是。。。"); 7 }; 8 obj.sayHi(); 9 10 ----------------------------------------------- 11 //优化后的写法 12 var obj2 = { 13 name: "小明", 14 age: 20, 15 sayHi: function () { 16 console.log("你好"); 17 }, 18 eat: function () { 19 console.log("吃了"); 20 } 21 }; 22 23 obj2.sayHi(); 24 obj2.eat();
对象中的点语法和另一种获取属性的方法
点语法
点语法:对象.名字=值;对象.名字=函数; 没有什么点,就有了
对象没有什么,只要点了,通过点语法,那么就可以为对象添加属性或者方法
点语法也是第一种获取属性的方法。
获取属性的另一种方法
对象名[属性名]:可以设置可以获取

1 function Person(name,age) { 2 this.name=name; 3 this.age=age; 4 this.play=function () { 5 console.log("玩游戏"); 6 } 7 8 } 9 var obj = new Person("卡卡西",20); 10 11 //可以将.name换成["name"] 12 obj["name"]="佐助"; 13 14 console.log(obj.name);
对象中的json格式数据
JSON格式的数据:一般都是成对的,是键值对
JSON也是一个对象,数据都是成对的,一般json格式的数据无论是键还是值都是用双引号括起来的。
JSON和对象是相同的,能对对象使用的方法,JSON都可以

1 var json = { 2 "name":"小明", 3 "age":"10", 4 "sex":"男" 5 }; 6 7 // 访问属性的方法和对象都相同 8 console.log(json.name); 9 console.log(json["name"]);
对象的遍历
对象不能使用for循环来遍历,应该使用 for --- in 来遍历
注意: 在for--in循环中,不能使用 对象名.key 的方式来获取value,这样是给对象中添加了key这个属性
应该使用:对象名[key]

1 var json = { 2 "name": "小明", 3 "age": "10", 4 "sex": "男" 5 }; 6 7 // for---in遍历 8 for(var key in json) 9 { 10 // console.log(key);//json对象中属性的名字 11 12 //不能.key因为用.时如果对象中有点后后面的内容,则输出对应的值,没有这个名字则添加这个名字的属性 13 console.log(json[key]); 14 15 //对象中确实有这个属性对象.属性的名字 或者对象[属性名字] 16 }
简单类型和复杂类型
数据类型分类
原始数据类型:number、string、boolean、undefined、null,object
基本类型(简单类型),值类型:number,string,boolean
复杂类型(引用类型):object
空类型:undefined,null
存储空间
值类型的值在那一块空间存储: 栈
引用类型的值在那一块空间存储: 栈和堆 对象在堆上存储,地址在栈上存储
值类型与引用类型传递什么
值类型中间传递的是值。值类型作为函数的参数,传递的是值
引用类型之间传递的是地址(引用)。引用类型作为函数的参数,传递的是地址
值类型和引用类型传递代码

1 //值类型与引用类型 2 var nume = 10; //值类型,值在栈上 3 var obj = {};//复杂类型,对象在堆,地址(引用)在栈 4 5 6 ------------------------------------------------------------------ 7 // 值类型的传递 8 var num = 10;//值类型 9 var num2 = num;//传递值 10 11 function f1(x) { 12 x = 100; 13 } 14 15 var num = 10; 16 f1(num); 17 console.log(num); 18 19 20 21 ---------------------------------------------------------------------- 22 // 引用类型的传递 23 var obj = { 24 name: "小明" 25 }; 26 27 function f2(obj2) { 28 obj2.name = "小红"; 29 } 30 31 console.log(obj.name);//小明 32 33 f2(obj); 34 console.log(obj.name);//小红
JavaScript中的内置对象
实例对象与静态对象
实例对象:通过构造函数创建出来,实例化的对象
静态对象:不需要创建,直接就是一个对象,方法(静态方法)直接通过对象名调用
实例方法必须通过实例对象调用
静态方法必须通过大写的对象调用
Math
Math为一个静态对象
Math.ceil();-----------向上取整
Math.floor();------向先取整
Math.pi-----------π
Math.Max()-------一组数的最大值
Math.Min()-------一组数的最小值
Math.abs()-------绝对值
Math.random()------生成一个伪随机数。返回一个浮点(0-1)伪随机数,可以*和+
Math.sqrt()------开平方
Math.pow()-------一个数字的多少次方

1 //返回π的值 2 console.log(Math.PI); 3 4 5 ------------------------------------------------------------------------------- 6 //方法abs();返回参数的绝对值 null返回0 其他形式都返回NaN 7 console.log(Math.abs(-1));//1 8 console.log(Math.abs(-2));//2 9 console.log(Math.abs(null));//0 10 console.log(Math.abs("string"));//NaN 11 12 13 ----------------------------------------------------------------------------------- 14 //ceil();返回参数的向上取整 15 console.log(Math.ceil(12.001));//13 16 console.log(Math.ceil(12.991));//13 17 console.log(Math.ceil(12.00001));//13 18 19 20 ----------------------------------------------------------------------------------- 21 //floor();返回参数的向下取整 22 console.log(Math.floor(12.001));//12 23 console.log(Math.floor(12.991));//12 24 console.log(Math.floor(12.00001));//12 25 26 27 ------------------------------------------------------------------------------------- 28 //fround();返回参数 离它最近的单精度浮点数形式的数字 29 console.log(Math.fround(2));//2 30 console.log(Math.fround(2.1));//2.0999999046325684 31 console.log(Math.fround(2.9));//2.9000000953674316 32 33 34 --------------------------------------------------------------------------------- 35 //max();返回一组数的最大值 36 console.log(Math.max(12,3,4,67,100,42));//100 37 38 39 ---------------------------------------------------------------------------------- 40 //min();返回一组数的最小值 41 console.log(Math.min(12,4,2,1,0,100));//0 42 43 44 ----------------------------------------------------------------------------------- 45 //pow(x,y);返回x的y此幂 46 console.log(Math.pow(20,2));//400 47 48 49 ----------------------------------------------------------------------------------- 50 //sqrt();开平方 51 console.log(Math.sqrt(16));//4 52 53 54 ---------------------------------------------------------------------------------- 55 //random();返回一个浮点(0-1)伪随机数; 56 console.log(Math.random()); 57 console.log(Math.ceil(Math.random()*5));//产生1-5的伪随机数 58 console.log(Math.floor(Math.random()*100)+1);
Date
Date为实例对象
用于不支持HTML5的浏览器创建Date对象:var dt = +new Date();//一种特殊的写法,只适用于Date的对象
var dt = new Date();
dt.getFullYear();-----------------------年
dt.getMonth();------------------月--->从0开始到11
dt.getDate();--------------------日
dt.getHours();-------------------小时
dt.getMinutes();----------------分钟
dt.getSeconds();----------------秒
dt.getDay();---------------------星期 --->从0开头,0代表周日
dt.toDateString();---------------日期
dt.toLocaleTimeString();--------日期
dt.toTimeString();----------------时间
dt.toLocaleTimeString();--------时间
dt.valueOf();---------------------毫秒
var date2 = Date.now();-------------毫秒值

1 // 得到毫秒值 2 var date2 = Date.now(); 3 console.log(date2);//获得从1970年到现在的毫秒数 4 var dt = new Date(); 5 console.log(dt.valueOf());//毫秒值 6 7 ------------------------------------------------------------- 8 var dt= new Date(); 9 //获取年份 10 console.log(dt.getFullYear()); 11 //获取月份 12 console.log(dt.getMonth());//获取的月份从0开始,真实月份需要加1 13 //获取日期 14 console.log(dt.getDate()); 15 //获取小时 16 console.log(dt.getHours()); 17 //获取分钟 18 console.log(dt.getMinutes()); 19 //获取秒 20 console.log(dt.getSeconds()); 21 //获取星期 22 console.log(dt.getDay());//星期从0开始,0代表星期日 23 24 25 ---------------------------------------------------------------------- 26 var dt = new Date(); 27 //英文格式的日期 28 console.log(dt.toDateString());//Sun Mar 08 2020 29 // 数字格式--日期 30 console.log(dt.toLocaleDateString());//2020/3/8 31 32 33 ------------------------------------------------------------------------------- 34 var dt = new Date(); 35 //小时分钟秒 36 console.log(dt.toTimeString());//20:36:38 GMT+0800 (中国标准时间) 37 //分上下午的小时分钟和秒 38 console.log(dt.toLocaleTimeString());//下午8:36:38
String
字符串特性:不可变性,字符串的值不可变
字符串可以通过索引访问字符串中的某个值,但是是只读的
.length---------字符串的长度
.charAt(索引)-----返回值是只读索引位置的字符串,超出索引则返回空字符串
.fromCharCode(数字值,可以是多个参数)-----返回ASCII码对应的值
.concat(字符串1,字符串2.....)-----返回这些字符串合成的字符串
.indexOf() 返回调用该方法的字符串中是否含有该参数,含有就返回索引。参数还可以有两个,第二个参数决定开始的位置。没找到返回-1
.lastIndexOf() 方法返回调用String 对象的指定值最后一次出现的索引,在一个字符串中的指定位置 fromIndex处从后向前搜索
.replace() 方法用于替换,如果元字符串有第一个参数,则替换为第二个参数
.slice() 方法提取某个字符串的一部分,并返回一个新的字符串,且不会改动原字符串
.split() 方法使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置
.substr() 方法返回一个字符串中从指定位置开始到指定字符数的字符。
.substring() 方法返回一个字符串在开始索引到结束索引之间的一个子集(不包含结束),或从开始索引直到字符串的末尾的一个子集
.toLocaleLowerCase()方法根据任何指定区域语言环境设置的大小写映射,返回调用字符串被转换为小写的格式。
.toLowerCase() 转小写
.toLocaleUpperCase() 转大写
.toUpperCase() 转大写
.trim() 方法会从一个字符串的两端删除空白字符

1 // .length:字符串长度 2 var str="12345"; 3 console.log(str.length); 4 5 6 --------------------------------------------------------------------- 7 // char(索引):返回索引位置的字符。超出位置返回空字符 8 var str = "qwertyuio"; 9 var rs=str.charAt(4); 10 console.log(rs);//t 11 12 13 ---------------------------------------------------------------- 14 //.fromCharCode(数值):返回该数值对应的ASCII码 15 var str=String.fromCharCode(65); 16 console.log(str); 17 18 19 ----------------------------------------------------------------------- 20 // .concat(字符串);拼接字符串 21 var str="what"; 22 console.log(str+" ara "+"you "); 23 var str="小苏"; 24 console.log(str.concat("喜欢","凤姐")); 25 26 27 ----------------------------------------------------------------------- 28 //.indexOf() 返回调用该方法的字符串中是否含有该参数,含有就返回索引。参数还可以有两个,第二个参数决定开始的位置 29 var str= "Hello word"; 30 console.log(str.indexOf("l"));//2 31 32 33 -------------------------------------------------------------------------------- 34 //.lastIndexOf( ) 从后往前找,但索引还是从前往后排 35 var str= "Hello amen"; 36 console.log(str.lastIndexOf("e"));//8 37 38 39 ------------------------------------------------------------------------------- 40 //.replace 替换方法 41 var str = "小苏好帅哦,真的好勇敢"; 42 if (str.indexOf("小苏") != -1) { 43 str = str.replace("小苏", "小杨"); 44 } else { 45 console.log("不存在"); 46 } 47 console.log(str); 48 49 50 ---------------------------------------------------------------------------- 51 //.slice() 返回从参数1到参数2-1的一个新字符串并返回 52 var str = "hello word"; 53 var str1 = str.slice(3,6); 54 console.log(str1); 55 56 57 ---------------------------------------------------------------------------- 58 //.split() 按照传入参数将原字符串分隔成多个字符串.第二个参数决定切割后留下的字符串个数 59 var str = "乔峰|慕容|凤姐|梅超风|小苏"; 60 var arr=str.split("|",3); 61 for(var i=0;i<arr.length;i++){ 62 console.log(arr[i]); 63 } 64 65 66 -------------------------------------------------------------------------------- 67 //.substr()返回一个字符串中从指定位置开始到指定字符数的字符 68 var str= "哈哈,小苏好帅哦"; 69 str=str.substr(5,2); 70 console.log(str);//好帅 71 72 73 ---------------------------------------------------------------- 74 //.substring() 75 var str= "哈哈,小苏真的好帅哦"; 76 str= str.substring(3,7); 77 console.log(str); 78 79 80 --------------------------------------------------------------- 81 //.toLocaleLowerCase() 转小写 82 //.toLowerCase() 转小写 83 var str ="HELLO"; 84 str= str.toLocaleLowerCase(); 85 str= str.toLowerCase(); 86 console.log(str); 87 88 89 --------------------------------------------------------------- 90 //toLocaleUpperCase() 转大写 91 //toUpperCase() 转大写 92 var str = "hello"; 93 str = str.toLocaleUpperCase(); 94 str = str.toUpperCase(); 95 console.log(str); 96 97 98 ------------------------------------------------------------------- 99 //trim() 删除开头和结尾的空格 100 var str = " ,真好。 "; 101 str = str.trim(); 102 console.log("======"+str+"=======");
Array
Array.isArray(对象)-------判断这个对象是不是数组 instanceof关键字:a instanceof Array;判读a是不是数组
.concat(数组1,数组2...)----将调用该方法的数组与参数数组拼接
.every(函数)-----返回值是布尔类型,函数作为参数使用,函数中有三个参数,第一个参数是元素值,第二个参数是索引值第三个参数是原来的数组(没用) 如果这个数组中每个元素的值都符合条件,最后才返回true
.filter(函数)----返回的是数组中每一个元素都复合参数函数条件的元素,组成了一个新的数组
.push(值)-----把值追加到数组中,加到最后。返回值为插入后的长度
.pop()-------删除数组中最后一个元素,返回值就是删除的这个值
.shift()-----删除数组中第一个元素,返回值就是删除的这个值
.unshift(值)------向数组的第一个元素前面插入一个新的元素,返回值为插入后的长度
.forEach(函数)-----遍历数组使用---相当于for循环
.indexOf(值)------找数组中是否有这个值,有返回这个值得索引
.join("字符串")-----在每个元素中间添加该字符串,返回添加后的字符串
.map(函数)-------数组中每个元素都要执行这个函数,把每个元素执行过这个函数后的到新的元素 放在新的数组中
.reverse()-----反转
.sort()-----排序,可能不稳定,则需要添加固定代码
.slice(参1,参2)-----从参1到参2前一个元素截取出来一个新数组并返回
.splice(参1,参2,参3)-----参1代表开始元素,参2代表要删除的个数,参数3代表要替换的元素。一般用于删除数组中的元素,或者替换元素,或者插入元素

1 //对象是不是数组类型:两种 2 //1, instanceof 3 var obj = []; 4 console.log(obj instanceof Array);//true 5 //2 使用数组的 .isArray方法 6 console.log(Array.isArray(obj));//true 7 8 9 ---------------------------------------------------------------------- 10 .from() 产生一个新的数组和原数组一样 11 var arr = ['a','b','c']; 12 var newArr=Array.from(arr); 13 console.log(newArr); 14 15 16 ---------------------------------------------------------------------- 17 //.concat 拼接数组 18 var arr1=[10,20,30,40]; 19 var arr2= [40,50,60,70]; 20 console.log(arr1.concat(arr2)); 21 22 23 ------------------------------------------------------------------------ 24 // .every(函数) 返回布尔类型。当数组中所有元素都满足函数为true 25 //a----元素的值 26 //b----索引的值 27 //c----谁调用了这个方法,那么c就是谁-----arr 28 var arr = ["小小明明1","小曹操674","小白白214","笑眯眯a"]; 29 var flag = arr.every(function (ele,index) { 30 return ele.length>4; 31 }); 32 console.log(flag); 33 34 35 ------------------------------------------------------------------------ 36 // .filter(函数) 返回所有满足函数的值 37 var arr = [10,20,30,40,50]; 38 var newarr=arr.filter(function (ele) { 39 return ele>30; 40 }); 41 console.log(newarr); 42 43 44 ------------------------------------------------------------------------- 45 // push();追加到最后,pop();删除最后一个并返回 46 var arr = [10,20,30,40,50]; 47 arr.push(80); 48 console.log(arr); 49 var result=arr.pop(); 50 console.log(result); 51 console.log(arr); 52 53 54 ------------------------------------------------------------------------- 55 // shift() 删除第一个元素 56 // unshift(值) 追加到第一个元素之前,成为第一个元素 57 var arr = [10,20,30,40,50]; 58 arr.unshift(80); 59 console.log(arr); 60 var result=arr.shift(); 61 console.log(result); 62 console.log(arr); 63 64 65 ------------------------------------------------------------------------ 66 // forEach(函数);遍历数组 67 var arr = [10,20,30,40,50]; 68 arr.forEach(function (ele,index) { 69 console.log(ele+"========="+index); 70 }); 71 72 73 ---------------------------------------------------------- 74 // indexOf(参数); 查找参数的索引位置 75 var arr = [10,20,30,40,50]; 76 var index = arr.indexOf(30); 77 console.log(index); 78 79 80 ------------------------------------------------------------ 81 //.join()每个元素中间添加参数字符 82 var arr = ["小白","小绿","小红","小黄"]; 83 var str = arr.join("|"); 84 console.log(str); 85 86 87 -------------------------------------------------------------- 88 //.map(函数)每个元素都执行这个函数,返回执行后的结果 89 var arr = [1,4,9]; 90 var roots = arr.map(Math.sqrt); 91 console.log(roots); 92 93 94 --------------------------------------------------------------- 95 //.reverse() 反转 96 var arr = [10,20,40,50]; 97 arr.reverse(); 98 console.log(arr); 99 100 101 ------------------------------------------------------------ 102 //.sort() 排序------如果不传参则不稳定 103 var arr = [10,30,20,50,40]; 104 //arr.sort();// 不稳定 105 arr.sort(function (a,b) { 106 if(a>b){ 107 return 1; 108 }else if (a==b){ 109 return 0; 110 }else { 111 return -1; 112 } 113 }); 114 console.log(arr); 115 116 117 ------------------------------------------------------------ 118 //.slice(参1,参2) 截取 119 var arr = [10,20,30,40,50,60,70]; 120 var newArr = arr.slice(3,4); 121 console.log(newArr); 122 123 124 --------------------------------------------------------------- 125 // .splice(参1,参2,参3) 替换 126 var arr = [10,20,30,40,50]; 127 arr.splice(2,0,60); 128 console.log(arr); 129 arr.splice(2,1); 130 console.log(arr);