数组

作者: 丫甘九 | 来源:发表于2019-12-30 18:32 被阅读0次

数组

数组
  • 数组也是一个对象
  • 他和我们普通功能类似
  • 不同的是普通对象是使用字符串作为属性名的,而数组是使用数字来作为索引操作元素
  • 索引
    从零开始的整数就是索引
  • 数组的存储比普通对象好,在开发中我们经常使用一些数组来存储一些数据
创建数组对象
var arr = new Array();
像数组中添加元素

语法:数组[索引] = 值

arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
读取数组中的元素

语法:数组[索引]
如果读取不存在的索引,他不会报错而会返回undefind


image.png
获取数组长度

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


image.png
向数组的最后一个位置添加元素
arr[arr.length] = 70;
arr[arr.length] = 80;
arr[arr.length] = 90;

image.png

使用字面量来创建一个数组

创建一个数组
var arr = new Array();
使用字面量来创建数组

语法:[]

var arr = [];
使用字面量创建数组时,可以在创建时就指定数组中的元素
var arr = [1,2,3,43,5,16];
使用构造函数创建数组时,也可以同时添加元素,将要添加的元素作为构造函数的参数传递
var arr2 = new Array(10,20,30);
创建一个数组,数组中只有一个元素10
arr = [10];
创建一个长度为10的数组
arr2 = new Array(10);
数组中的元素可以是任意数据类型
arr = ["aaaa","aaaads","sfaa","rafer"];
也可以是对象
var obj = {name:"孙悟空"};
arr[arr.length] = obj;
arr = [ {name:"孙悟空"}, {name:"沙和尚"}, {name:"老王"}];
也可以是函数
arr = [function (){},function (){}];
也可以是数组
arr = [[1,23,4],[21,3,4],[2,4,5]];

数组的四个方法

push()
  • 该方法可以向数组的末尾添加一个或多个元素,并返回数组的新长度
  • 可以将要添加的元素作为方法的参数传递
    这样这些元素将会自动添加到数组的末尾


    image.png
pop()
  • 该方法可以删除数组的最后一个元素


    image.png
unshift()
  • 向数组开头添加一个或多个元素,并返回新的数组长度


    image.png
shift()
  • 可以删除数组的第一个元素,并将被删除的元素作为返回值返回


    image.png

遍历数组

image.png
forEach()遍历数组
  • forEach()方法需要一个函数作为参数
  • 像这种函数,由我们创建但是不由我们调用的,我们称之为回调函数
  • 数组中有几个元素函数就会执行几次,每次执行时,浏览器会将遍历到的元素以实参的形式传递进来,我们可以定义形参,来读取这些内容
  • 第一个参数,就是当前正在遍历的元素
  • 第二个参数,就是当前正在遍历元素的索引
  • 第三个参数,就是正在遍历的数组
var arr = ["孙悟空",18,"男"];
arr.forEach(function (value,index,obj) { console.log(value) })
image.png
slice()
  • 可以用来从数组提取新元素
  • 该方法不会改变元素数组,而是将截取到的元素封装到一个新数组中返回
  • 参数
    1、截取开始位置的索引,包含开始索引
    2、截取结束位置的索引,不包含结束索引
  • 第二个参数可以省略不写,此时会截取从开始索引往后的所有元素
  • 索引可以传递一个负值,如果传递一个负值,则从后往前计算
    -1 :倒数第一个
    -2:倒数第二个
var arr = ["孙悟空","猪八戒","沙和尚","白骨金","蜘蛛精"];

var result = arr.slice(1,2);
var result2 = arr.slice(3);
var result4 = arr.slice(1,-2);
console.log(result);
console.log(result2);
console.log(result4);
image.png
splice()会影响到原数组,会将指定元素从原数组中删除,并将删除的元素作为返回值返回
  • 参数
    第一个:表示开始位置的索引
    第二个:表示删除的数量
    第三个及以后:
    可以传递一些新的元素,这些元素将会自动插入到开始位置索引前边
var arr = ["孙悟空","猪八戒","沙和尚","白骨金","蜘蛛精"];

var result = arr.slice(1,2);
var result2 = arr.slice(3);
var result4 = arr.slice(1,-2);
//从第一个位置开始,删除俩个
var result5 = arr.splice(1,2);
//从第一个位置开始,删除一个,在第一个位置之前插入"牛魔王","天山公主","红孩儿"
var result6 = arr.splice(1,1,"牛魔王","天山公主","红孩儿");
console.log(result);
console.log(result2);
console.log(result4);
console.log(arr);
console.log(arr);
image.png
数组去重练习
//出创建一个数组
var arr = [1,2,3,4,3,21,1,4,53,32,53,2,7,5,9,7,6,45,56,56,78];

//去除数组中重复的数字

//获取数组中的每一个元素
for (var i = 0;i < arr.length;i++){
  //获取当前元素后的所有元素
  for (var j = i+1;j < arr.length-i;i++){
    //判断俩个元素是否相等
    if (arr[i] ==arr[j]){
      //如果相等,则证明出现了重复的元素,则删除j对应的元素
      arr.splice(j,1);
      //当删除了当前j所在的元素以后,后面的元素会自动补位
      //此时将不会比较这个元素,需要再一次比较j所在位置的元素
      //使j自减
      j--;
    }
  }

}
console.log(arr);
image.png
call()和apply()
  • 这俩个方法都是函数对象的方法,需要通过函数对象来调用
  • 当对函数调用call()和apply都会调用函数执行
  • 在调用call()和apply()可以将一个对象指定为第一个参数
    此时这个对象将会成为函数执行时的this
  • call()方法可以将实参在对象之后依次传递
  • apply()方法需要将实参封装到一个数组中统一传递
  • this的情况
    1、以函数形式调用时,this永远是window
    2、以方法形式调用时,this是调用方法的对象
    3、以构造函数的形式调用时,this是新创建的那个对象
    4、使用call()和apply()调用,this是指定的那个对象
fun()=fun.call()=fun.apply
Arguments
  • 在调用函数时,浏览器每次会传递进俩个隐含的参数
    1、函数的上下文对象this
    2、封装实参对象arguments
  • arguments是一个类数组对象,他也可以通过索引来操作数据,也可以获取长度
  • 在调用函数时,我们所传递的实参都会在arguments保存
  • arguments.length可以用来获取实参的长度
  • 我们即使不定义形参,也可以通过arguments来使用实参,只不过比较麻烦
    arguments[0] 表示第一个实参
    arguments[1] 表示第二个实参
  • 他里边 有一个属性叫做callee
    这个属性对应一个函数对象,就是当前正在指向的 函数的对象
function fun(a,b) {
  console.log(arguments instanceof Array);
  console.log(Array.isArray(arguments));
  console.log(arguments[1]);
  console.log(arguments.length);
  console.log(arguments.callee);
}
fun("helkl","aFEWQA");
image.png

相关文章

  • 数组

    数组数组数组数组数组数组数组数组数组

  • JavaScript - 5.数组<增删改查>

    数组 Array 数组 - 增 数组 - 删 / 改 数组 - 查 数组 - 自动 toString() 数组 -...

  • PHP数组使用

    数组定义 数组增、删、改 数组查询 数组排序 数组合并、分割 数组比较、去重复 数组长度 数组遍历 数组转换 其他...

  • 》》》PHP初入---(三)

    数组定义 1.索引数组:数组下标是整型的 声明数组: 访问数组: count(数组)--获取数组长度 查看数组所有...

  • JavaScript中数组的常用操作

    数组的遍历 数组的映射 数组的简化 数组的连接 获取数组的片段 数组的拷贝 查找数组 数组去重

  • JavaSE之数组

    六、数组 目录:数组概述、数组声明创建、数组使用、多维数组、Array类、稀疏数组 1.什么是数组 数组的定义:数...

  • Shell数组、关联数组

    数组 定义数组 获取数组 关联数组 定义关联数组 获取关联数组

  • 学习Java第五天

    数组是多个数据的集合 数组的语法 数组元素类型【】 数组名; 多维数组: 数组元素类型【】【】 数组名; 多维数组...

  • php基础精粹

    PHP php数组 php数组之索引数组初始化 PHP数组之索引数组赋值 PHP数组之访问索引数组内容 PHP数组...

  • C语言的惯用集

    数组部分 数组部分 清空数组a 把数据读进数组a 对数组a求和

网友评论

      本文标题:数组

      本文链接:https://www.haomeiwen.com/subject/fsymoctx.html