前端学习(JS学习第五天 尚硅谷JS基础视频)

本文详细介绍了JavaScript中的数组,包括创建、属性、方法和遍历,以及数组的实用技巧如去除重复元素。此外,还讲解了函数对象的方法如call()和apply(),以及Date对象和Math对象的常用方法。同时,提到了arguments对象和字符串的属性与方法,为前端开发者提供了全面的JS基础知识参考。
摘要由CSDN通过智能技术生成

前端学习(JS学习第五天 尚硅谷JS基础视频)

1. 数组(Array)

  数组也是一个对象。和普通的对象功能类似,也是用来存储一些值的。不同的是普通对象使用字符串作为属性名,数组是使用数字来作为索引来操作元素。数组中可以是任意的数据类型。

1.1 数组的创建和使用

  数组的创建如下:

var array = new Array();
var array1 = new Array(10,20);

  向数组中添加元素,语法:数组[索引] = 值

var array = new Array();
array[0] = 90;

  读取数组中的元素,语法:数组[索引]。如果读取不存在的索引,不会报错而是返回undefined。

var array = new Array();
array[0] = 90;
console.log(array[0]);

  使用字面量创建数组。语法:[]。

var array = [];

  使用字面量创建数组,可以在创建时就指定数组中的元素。

var array = [1,2,3];

创建一个数组只有一个元素10
arr = [10];
创建一个长度为10的数组
arr = new Array(10);

1.2 数组的属性

  获取数组的长度,通过length属性。语法:数组.length。对于连续的数组,使用length可以获取到数组的长度(元素的个数);对于非连续的数组,使用length会获取到数组的最大索引+1。

var array = new Array();
array[0] = 90;
console.log(array.length);

  修改length。如果修改的length大于原长度,则多出的部分会空出来。如果修改的length小于原数组,则多出的元素会被删除。语法:数组.length = 新值。

var array = new Array();
array.length = 10;

  向数组最后一个位置添加元素。语法:数组[数组.length] = 新值。

var array = new Array();
array[array.length] = 10;
1.3 数组的方法
  • push()
    向数组末尾添加一个或多个元素,并返回新的长度。将要添加的元素作为方法的参数传递。
var array = new Array();
var result = array.push(10,20); //返回新的长度
  • pop()
    删除并返回数组的最后一个元素。
var array = new Array();
var result = array.pop(); //返回新的长度
  • unshift()
    向数组的开头添加一个或多个元素,并返回新的数组长度。
var array = new Array();
var result = array.unshift(); //返回新的长度
  • shift()
    删除并返回数组的第一个元素。
var array = new Array();
var result = array.shift(); //返回新的长度
  • slice(start,end)
    从某个已有的数组,返回选定的元素。start表示截取开始位置的索引,end表示截取结束位置的索引,end可以省略,左闭右开。索引可以传递一个负值,如果传递负值,则从后往前计算。
var array = [11, 12, 12, 13, 24];
var result = array.slice(0,2); //返回新的数组
var result = array.slice(1);
  • splice(start,number,value)
    可以用于删除数组中的指定元素,直接更改原数组,返回删除的元素。start表示删除开始位置的索引,number表示删除几个元素。value可以传递一些新的元素,这些元素会自动插入开始位置索引处。
var array = [11, 12, 12, 13, 24];
array.splice(0,2); //返回新的数组
var result = array.splice(1);
  • concat()
    连接两个或更多的数组,并返回结果。
var array = [11, 12, 12, 13, 24];
var array2 = [11, 23];
var result = array.concat(array2);
  • join(value)
    把数组的所有元素放入一个字符串,元素通过指定的分隔符进行分隔,并返回转换后的字符串。value表示分隔符,若不指定分隔符,默认为,。
var array = [11, 12, 12, 13, 24];
var result = array.join("hello");
  • reverse()
    颠倒数组中元素的顺序,对原数组进行更改。
var array = [11, 12, 12, 13, 24];
array.reverse();
console.log(array);
  • sort()
    对数组的元素进行排序,对原数组进行更改,默认按照Unicode编码进行排序。
    对数字进行排序可能会出现错误,可以自己指定排序规则。可以在sort()添加一个回调函数,来指定排序规则。回调函数中需要定义两个形参,浏览器会分别使用数组中的元素,作为实参去调用回调函数。使用哪个元素调用不确定,a一定是b前面的值。
    浏览器会根据回调函数的返回值来决定元素的顺序,如果返回一个大于0的值,则元素会交换位置;若返回一个小于等于0的值,则元素位置不变。如果需要升序排列,则返回a-b;如果需要降序排列,则返回b-a。
var array = [11, 12, 12, 13, 24];
array.sort(a, b);
console.log(array);
1.3 数组的遍历

  遍历数组,就是将数组中的所有元素都取出来。一般使用for循环遍历数组。JS还提供了forEach()方法,用来遍历数组。但是不支持IE8即以下的浏览器。
  forEach()方法需要一个函数作为参数。像这种函数,由我们创建,但是不由我们调用的,称为回调函数。数组中有几个元素,回调函数就执行几次,每次执行时,浏览器会将遍历到的元素,以实参的形式传递进来,可以定义形参,来读取这些内容。语法:数组.forEach(function(){});
  浏览器会在回调函数中传递三个参数:

  • 第一个参数,就是当前正在遍历的元素
  • 第二个参数,就是当前正在遍历元素的索引
  • 第三个参数,就是当前正在遍历的数组
var array = [11, 12, 12, 13, 24];
array.forEach(function(value, index, obj){
	console.log("value = " +value); //数组中的元素
	console.log("index = " +index); //数组中的元素的索引
	console.log("obj = " +obj); //数组
});
1.3 练习

  练习:去除数组中重复的数字。

var array = [1,2,3,2,4,1,3,4,6,6];
	for(i = 0; i < array.length; i++) {
		for(j = i + 1; j < array.length; j++) {
			if(array[i] == array[j]) {
				array.splice(j, 1);
				j--;
			}
		}
	}
console.log(array);

2. 函数对象的方法

  call()和apply()都是函数对象的方法,需要通过函数对象来调用。当对函数调用call()和apply()都会调用函数执行。
  在调用call()和apply()时,可以将一个对象指定为第一个参数。此时这个对象将会成为函数执行时的this。
  call()方法可以将实参在对象之后依次传递;apply()方法需要将实参封装到一个数组中统一传递。

this的情况:
1.以函数形式调用时,this永远都是window
2.以方法形式调用时,this是调用方法的对象
3.以构造函数调用时,this是新创建的那个对象
4.使用call和apply调用时,this是指定的那个对象

3. argument

  在调用函数时,浏览器每次都会传递进两个隐含的参数,一个是函数的上下文对象this,另一个是封装实参的对象arguments。
  arguments是一个类数组对象(arguments instanceof Array 结果是false,还可以用Array.isArray())。它可以通过多音来操作数据,也可以获取长度。再调用函数时,传递的实参都会在arguments中保存。arguments.length
用来表示实参的个数。
  arguments中有一个属性callee,这个属性对应一个函数对象,就是当前正在执行的函数对象。

4. Date对象

  使用Date对象表示一个时间。如果直接使用构造函数创建一个Date对象,则会封装为当前代码执行时间。创建一个指定的时间对象,需要在构造函数中传递一个表示时间的字符串作为参数。日期格式:月份/日/年 时:分:秒

//创建一个Date对象
var d = new Date();
4.1 方法
  • getDate()
    获取日期对象是几日。
  • getDay()
    获取日期对象是周几。0-6中的一个值。
  • getMonth()
    获取日期的月份。0-11中的一个值。
  • getFullYear
    获取年份。
  • getTime
    获取当前日期的时间戳。

5. Math对象

  Math和其他对象不同,不是一个构造函数,属于一个工具类,不用创建对象,里面封装了数学运算相关的属性和方法。

6. 包装类

  JS中为我们提供三个包装类,String、Number、Boolean。通过三个包装类可以将基本数据类型的数据转换为对象。但是基本不用基本数据类型的对象。

var num = new Number(3);

  当对一些基本数据类型去调用属性和方法时,浏览器会临时使用包装类,将其转换为对象,然后再调用对象的属性和方法。调用完后,会将其转换为基本数据类型。

5. 字符串的属性和方法

  字符串在底层是以字符数组的形式保存的。

5.1 属性
  • length
    字符串长度
5.2 方法
  • charAt()
    返回指定位置的字符。
  • charCodeAt()
    返回指定位置字符的Unicode编码。
  • formCharCode()
    可以根据字符编码获取字符。
    语法:String.formCharCode()
  • concat()
    可以用来连接两个或多个字符,返回新的字符串。
  • indexOf()
    可以检索一个字符串是否含有指定内容,如果有,并返回索引;如果没有,则返回-1。可以指定第二个参数,指定开始查找的位置。
  • lastIndeOf()
    从后往前找元素,如果有,并返回索引;如果没有,则返回-1。可以指定第二个参数,指定开始查找的位置。
  • slice(start,end)
    截取字符串,并返回截取内容。左闭右开。
  • subString(start,end)
    截取字符串,与slice()类似,不同的是该方法不能接收传递负值,如果传递负值,则默认使用0,还会自动调节参数位置,如果第二个小于第一个,则自动交换。
  • subStr(start,length)
    截取字符串,第一个表示开始位置,第二个表示截取的个数。
  • split(str)
    将会根据str来拆分成数组。若传入空串,将会把每个字母都分开。
  • toUpperCase()
    将字符串转化为大写,并返回。
  • toLowerCase()
    将字符串转化为小写,并返回。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值