day07

数组


#### 一、数组的概述

数组的概念(标准定义):数组是一个可以存储一组或一系列相关数据的容器。

数组的概念(理解定义): 一组数的集合,称为”数组”。

比如说求全班同学年龄的总和的平均数?

var age1 = 20var age2 = 23;

var age3 = 26;

。。。

var age60 = 21;

var sum = age1 + age2 + age3 +.+ age60;

var n=60;

var arr = [10,20,30,40,50];

这样很麻烦工作量也很大,万一人数增加了或减少了很不方便。用数组做循环很方便。

var arr=[ “张三”, ”男”, 24, ”本科”, ”北京大学”];

数组的元素:是指存储在数组中并赋予唯一索引号的数据段。简单来说就是数组中的每个值,称为一个”数组元素”。

数组的作用:为了解决大量相关数据的存储和使用的问题。

例:村庄散住户,楼房住户,找的时候通过门牌号找 。

二、数组的创建

(1)使用new关键字和Array()来创建数组(也叫构造函数方法)

var arr = new Array();//创建一个空数组

var arr = new Array(“张三”,”男”,24,”未婚”,”本科”,”北京大学”);//创建一个数组,并初始化数组的元素。

(2)使用[]方式创建一个数组

var arr = [“张三”,”男”,24,”未婚”,”本科”,”北京大学”];

注意点:数组元素的值,可是任何类型。如:字符型、数值型、布尔型、数组型、对象型、函数、对象型。

三、数组常用知识
1、数组的索引(index)

a、数组中有多个值,每个值都有一个”编号”,通过”编号”可以访问到数组中的每个值,数组中的”编号”又称”下标”或”索引号”。

b、数组中的”下编号”是从0开始的正整数。也就是说:第1个数组元素下标为0,第2个数组元素下标为1,

第三个数组元素下标为2,以此类推。

c、第1个数组元素下标一定是0,最后一个数组元素的下标是:长度-1;

d、使用数组的目的,就是使用循环遍历数组很方便。

2、数组的属性

数组对象属性length:就是指数组中元素的总个数。

3、数组元素的访问
数组元素的访问 例如:

var arr=[10,20,30,40,50];

var arr=["张三","男",24,"本科","北京大学"];

访问的方法是:数组变量名,后跟一个中括号[],[]中括号内是数组元素的下标。如:arr[3];

4、数组的操作
1)读取元素:读取已经存在下标的元素。如:var age = arr[2];

2)修改元素:修改已经存在下标的元素的值(重新赋值)。如:arr[2] = 25;

3)增加元素:添加一个不存在的下标的元素。

4)删除元素:使用关键字delete,只能删除元素值,而下标还在。

实例:使用数组保存个人信息,并输出结果。
5、数组的遍历

什么是遍历?就是从数组中把数据一个一个的读取或写入。

1)普通for循环

var arr6 = [1, 2, 3, 4, 5, 6];

alert(arr6);

顺序遍历

for(var i = 0; i<arr.length; i++)

{
     alert(arr6[i]);
 }

逆序输出

for(var i = arr.length-1; i>=0; i--)

{
     alert(arr[i]);
}

2)for…in 语句用于遍历数组或者对象的属性(快速遍历) 作用:只能遍历数组和对象

语法:for(变量 in 集合) 集合:数组名和对象名

for(var i in arr)

{
    alert(arr[i]);
}


6、数组的方法
shift():删除数组中第一个元素,并将长度减1.

pop():删除数组中最后一个元素,并将长度减1.

unshift():往数组前面添加一个或多个数组元素,长度要改变。

push():往数组结尾添加一个或多个数组元素,长度要改变。



concat() : 方法用于连接两个或多个数组, 不改变原数组。返回一个新的数组。

reverse()  逆向排序, 原数组也被逆向排序了 

toString()  将数组转成字符串

join(“拼接符”)将数组转成字符串,中间以拼接符连接
slice(start,end):  不修改原数组, 将原数组中的指定区域数据提取出来。start开始 end结束。 如果参数是负值表示从倒数开始。不含结束位置

splice 
删除:用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数)

插入:向数组指定位置插入任意项元素。三个参数,第一个参数(开始位置),第二个参数(0),第三个参数(插入的项)

注意点:第二个参数(0)为0不会删除任何项

替换:向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数。第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项)

sort() 方法对数组进行排序

a-b  如果它的值为正数,就交换它们的位置

b-a  如果值为正数,交换它们的位置

7、数组的排序

1)冒泡排序

思路:随便输入几个个无序的数字,从头到尾依次比较相邻两个数字大小,若大数在前、小数在后,则交换两数位置,依次比较,使全部数据按从小到大排列。

var arr = [5, 3, 7, 1];

通过上面的例子我们了解到,所谓冒泡排序是一种比较形象的说法,一组数中两两按着大小不同交互顺序,就像我们平时看到的气泡一样是从低一层一层往上冒泡泡一样。在这里不要想复杂了,一直纠结在冒泡两字上。只要记住它最终的作用就是按着规律排序。

2)选择排序

思路:将第一位依次与后面的元素相比较,得到最小值,与第一位交换。再用第二位依次与后面元素相比较,得到最小值,与第二位交换。

3)数组去重


四、堆和栈
五、对象
对象的介绍

我们知道之前学习数据类型时,提过对象,说它是复合数据类型,什么数组,函数都是复合数据类型,它们的最显著特点就是一个变量名可以存多个值。当然对象也是可以存多个值,和数组函数类似的一种东西。

人就是一个”对象”, 人的特征(属性)有:身高、体重、姓名、性别、年龄。每个人可以有不同的本事(方法):打游戏、玩打飞机、炒股、开车等都是方法。你们现在只要理解对象是由”属性”和”方法”构成的就行。其实我们学习对象也就是学习它的属性和方法。

JS中对象分类

JS内置对象:数组对象、日期对象、字符串对象。。。。。等。

BOM对象,浏览器各组件对象,包括:window、document、location、history。。。。

DOM对象,文档对象,包括:所有的HTML标记,每一个HTML标记都是一个对象。

自定义对象,根据自己的项目需要,要自己定义自己的对象。

对象的创建
//1、使用new关键字结合构造函数Object()来创建一个空的对象
var obj=new Object();

//添加属性
obj.name=”小明”;

obj.sex=”男”;

obj.age=24;

obj.isMarried=true;

obj.edu=”大专”;

obj.school;

//添加方法
obj.showInfo=function(){}


//2、使用大括号{}来创建一个对象
var obj={
    name : “张三”,

    sex  : “男”,

    age  : 24,

    isMarried : true,

    edu  : “大专”,

    school : undefined

    showInfo : function(){}
}

六、Json表示对象的方法
JSON介绍

概念:

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)。JSON和JS对象的格式是一样的,只不过JSON字符串中的属性名必须加双引号。

JSON的特点:

1JSON 是轻量级的文本数据交换格式

2JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHPJSP.NET)编程语言都支持JSON3JSON 具有自我描述性,更易理解

为什么使用JSON:

JS中的对象只有JS自己认识,其他语言都不识别。JSON就是一种特殊的字符串,这个字符串可以被任意的语言所识别,并且可以转为其他语言中的对象,JSON主要用于数据交换

JSON的分类:

1、对象表示  {}

var obj = '{"name" : "张三", "age" : 18, "sex" : "男"}'

2、数组表示  []

var arr = '[10, 66, "hello", true]';

注意点:JSON里面能设置的值的类型,字符串、数值、布尔、null、对象、数组,不能是函数,因为其他语言不能识别

例如:

var obj = '{"name" : "张三", "age" : 18, "sex" : "男"}'

var arr = '[10, 66, "hello", true]'

var obj = '{"arr" : [1, 2, 3]}'

var arr = '[{"name" : "张三", "age" : 18, "sex" : "男"},{ "name" : "李思","age" : 20,"sex": "女"}]'

JSON转对象的方法:

JSON.parse()可以将JSON字符串转为js对象。

JS对象转JSON的方法:

JSON.stringify() 可以将JS对象转为JSON字符串

eval()方法(了解):

把字符串转成一个对象

eval()这个函数可以用来执行一段字符串形式的JS代码,并将执行结果返回

var str = "alert('hello')";

eval(str);

如果使用eval()执行的字符串中含有{}, 它会将{}当成代码块执行,如果不希望将其当成代码块解析,则需要在字符串前后各加一个()

var obj = eval("("+'{a:1}'+")");

在开发中尽量不要使用,首先的执行性能比较差,然后它还有安全隐患

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿駷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值