翼度科技»论坛 编程开发 JavaScript 查看内容

自学day7 数组

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
  1. typora-copy-images-to: media
复制代码
数组

一、概念

对象中可以通过键值对存储多个数据,且数据的类型是没有限制的,所以通常会存储一个商品的信息或一个人的信息:
  1. var obj = {
  2.     goodsname:"手机",
  3.     price:"5000",
  4.     introduce:"手机很时尚,很漂亮!"
  5. }
  6. var person = {
  7.     name:"张三",
  8.     age:12,
  9.     sex:"男"
  10. }
复制代码
但对象在存储同类型数据的时候比较困难,例如,存储一个班级所以人的姓名:
  1. var obj = {
  2.     name1:"张三",
  3.     name2:"李四",
  4.     name3:"王五",
  5.     ...
  6. }
复制代码
这种存储方式我们没有办法通过一个人的姓名获取到这个人的编号,也没有办法通过一个编号获取到某个人的姓名。
js提供了另外一种对象类型的数据,可以通过编号来存储数据:数组。也是对象3种表现形式中的另外一种,[]定义的对象。
二、数组定义
  1. var arr = []
复制代码
这是一个空数组,定义带数据的数组:
  1. var arr = ['张三','李四','王五','赵六']
复制代码
输出结果:

数组中的数据类型没有限制,在实际项目中,数组中通常会存储同一类型的数据。
  1. var arr = ['a',2,false,undefined,{name:"张三"}];
复制代码

数组这种数据,相当于在一个大空间中,有很多小空间,每个值前面的数字,表示这个小空间的编号,专业术语叫下标。第一个下标永远是0,依次向后递增,最后一个下标是值的个数-1
也就是说,数组这种数据中每个值是有顺序的。
js还提供了一个构造函数,用来创建数组:
  1. var arr = new Array("张三","李四","王五")
复制代码
这两种方式定义的数据是一样的。
有一种情况,这两种定义方式是不一样的:
  1. var arr = [5]
  2. var brr = new Array(5)
  3. console.log(arr,brr)
复制代码

[]形式定义的是一个数组中有一个小空间,其中的值是5;构造函数方式定义的,表示有5个空的小空间。
数组的规律:
第一个值的下标永远是0;
最后一个值的下标永远是值的个数-1。
三、数组基本操作

数组中值的个数:数组.length
  1. var arr = ['张三',"李四","王五","赵六"];
  2. var arr1 = [1,2,3,4,5,6];
  3. console.log(arr.length); // 4
  4. console.log(arr1.length); // 6
复制代码
访问数组中的元素:数组[下标]
例:
  1. var arr = ["张三","李四","王五"];
  2. console.log(arr[1]); // 李四
复制代码
第一个值永远是:数组[0];最后一个值永远是:数组[数组.length-1]
添加元素:数组[下标] = 值
例:
  1. var arr = ["张三","李四"];
  2. arr[2] = "王五";
  3. console.log(arr); // (3) ["张三", "李四", "王五"]
  4. arr[10] = "赵六";
  5. console.log(arr); // (11) ["张三", "李四", "王五", empty × 7, "赵六"] 中间还有7个空元素
复制代码
修改元素:数组[下标] = 值
例:
  1. var arr = ["张三","李四"];
  2. arr[0] = "王五";
  3. console.log(arr); // (2) ["王五", "李四"]
复制代码
使用说明:如果下标是已经存在的,那赋值操作就是修改数组元素的值,如果下标是不存在,那赋值操作就给数组添加元素。
删除元素:delete 数组[下标]
  1. var arr = [1,2,3];
  2. delete arr[0];
  3. console.log(arr)
复制代码

这种删除方式,只能删除值,并不能删除小空间。
数组长度的赋值:
  1. var arr = [1,2,3];
  2. arr.length = 0;
  3. console.log(arr) // []
  4. var arr = [1,2,3];
  5. arr.length = 10;
  6. console.log(arr)
复制代码
  1. var arr = [1,2,3];
  2. arr.length = 1;
  3. console.log(arr) // [1]
复制代码
遍历数组:
如果要将数组中的所有元素都输出,操作如下:
  1. var arr = ["张三","李四","王五","赵六"];
  2. console.log(arr[0]); // 张三
  3. console.log(arr[1]); // 李四
  4. console.log(arr[2]); // 王五
  5. console.log(arr[3]); // 赵六
复制代码
从上面输出的代码中可以看出,多次输出是在进行重复动作,并且多次重复之间是有规律可循的,所以可以使用循环进行这个重复动作:
  1. var arr = ["张三","李四","王五","赵六"];
  2. var length = arr.length;
  3. for(var i=0;i<length;i++){
  4.         console.log(arr[i]);
  5. }
复制代码
使用说明:
使用方法和功能跟map方法很像,只是运行规则不一样。map方法中的函数,用于返回新的元素,而filter方法中的函数,根据返回true或false来筛选元素
reduce方法
用于数组求和
语法:
  1. var arr = ["张三","李四","王五","赵六"];
  2. for(var i in arr){
  3.         console.log(arr[i]);
  4. }
复制代码
其中a第一次的时候,表示第一个元素,第二次开始表示上一次返回的数据,b第一次表示第二个元素,第二个开始表示第三个元素、第四个元素。。。
some - 判断数组中是否至少有一个元素是满足指定条件的,返回布尔值
语法:
  1. var arr = ['a','b','c'];
  2. arr[5] = 'd'
  3. console.log(arr);
  4. for(var i=0;i<arr.length;i++){
  5.     console.log(arr[i]);
  6. }
复制代码
例:判断所有成绩中是否有不及格的成绩
  1. var arr = ['a','b','c'];
  2. arr[5] = 'd'
  3. console.log(arr);
  4. for(var i in arr){
  5.     console.log(arr[i]);
  6. }
复制代码
find - 查找数组中第一个满足指定条件的值,找到返回值,找不到返回undefined
语法:
  1. var arr = ['a','b','c'];
  2. for(var i=0;i<arr.length;i++){
  3.     console.log(i);
  4. }
复制代码
例:找出所有成绩中第一个不及格的成绩
[code]var arr = [68,95,78,56,86,63];var ele = arr.find(function(v,i,a){    return v

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

上一篇: day2-JS基础&流程控制

下一篇: day3-函数

举报 回复 使用道具