美文网首页JS
JavaScript 学习 (2) -- 数组

JavaScript 学习 (2) -- 数组

作者: 爱sa笑的菇凉 | 来源:发表于2020-07-27 15:37 被阅读0次

对象 (Object)

创建Object实例的方式有两种:

  1. 使用new操作符后跟Object构造函数
var person = new Object();
person.name = "Nick";
person.age = 18;
  1. 使用对象字面量表示法, 代码量少,但是在使用对象字面量的时候实际上不会调用Object的构造函数 常用
var person = {
   name : "Nick",
   age : 18
};

访问对象属性的两种方法

  1. 点表示法 常用
对象名.属性
person.name
  1. 方括号表示法,可以通过变量来访问属性
对象名[“属性”]
person["name"]

数组 (Array)

  1. 数组的每一项可以保存任何类型的数据
  2. 数组的大小是可以动态调整的

创建数组的基本方式有两种

  1. Array构造函数
var testArray = new Array();
var testArray = new Array("read", "write");
  1. 数组字面量表示法,不会调用Array构造函数
var testArray = ["read", "write"];
var testArray2 = [1,2];

数组的各种方法

A. 数组的栈方法

  1. 栈: 是一种LIFO(Last-In-First-Out,后进先出)的数据结构,也就是最新添加的项最早被移除。而栈中项的插入(叫做推入)和移除(叫做弹出),只发生在一个位置——栈的顶部
  2. push() -- 插入:可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度
  3. pop() -- 移除: 从数组末尾移除最后一项,减少数组的length值,然后返回移除的项

B. 数组的栈方法

  1. 队: 是一种FIFO(First-In-First-Out,先进先出)的数据结构,也就是最早添加的项最先被移除。队列在列表的末端添加项,从列表的前端移除项
  2. unshift():它能在数组前端添加任意个项并返回新数组的长度
  3. shift(): 移除数组中的第一个项并返回该项,同时将数组长度减1

C. 数组的排序方法

  1. reverse(): 反转数组项的顺序,其返回值是经过排序之后的数组
  2. sort(): 按升序排列数组项,最小的值位于最前面,最大的值排在最后面。 使用toString()转型方法,将数组的所有项转换成字符串进行比较,然后排序。其返回值是经过排序之后的数组
var colors = ["red", "blue", "yellow", "white"];

    colors1 = colors.reverse(); 
    alert(colors1);   //"white", "yellow", "blue", "red"

    colors2 = colors.sort(); 
    alert(colors2);   //"blue", "red", "white", "yellow"

D. 数组的操作方法

  1. concat(): 基于当前数组中的所有项创建一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组
  2. slice(): 可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项——但不包括结束位置的项。注意,slice()方法不会影响原始数组
  3. splice(): 主要用途是向数组的中部插入项。 包含三个参数: 参数1: 要操作的其实位置; 参数2:要删除的项数;参数3:要添加的数组项;且返回的是删除的数组的项
var colors = ["red", "blue", "yellow", "white"];

    colors3 = colors.concat("brown", ["gray", "black"]); 
    alert(colors3);   //"red", "blue", "yellow", "white", "brown", "gray", "black"

    colors4 = colors.slice(1, 3); 
    alert(colors4);   //"blue", "yellow"

    colors5 = colors.slice(2); 
    alert(colors5);   //"yellow", "white"

    colors6 = colors.splice(1,2);   //从数组下标为1的项开始,删除两项
    alert(colors1);   //"red", "white"   //colors数组也被改变了
    alert(colors6);   //"blue", "yellow"

    colors7 = colors.splice(1,0, "gray", "black");   //从数组下标为1的项开始,之后添加两项
    alert(colors);   //"red", "white", "gray", "black"
    alert(colors7);   //[] 空数组,因为没有删除任何项

     colors8= colors.splice(1,1, "orange", "purple");   //从数组下标为1的项开始,删除一项,并且添加两项
    alert(colors);   //"red", "white", "orange", "purple", "black"
    alert(colors7);   //"gray" 删除了一项

E. 数组的位置方法

  1. indexOf(): 接收两个参数(要查找的项,(可选的)查找起点位置的索引),从数组的开头开始向后查找,返回找到的第一个对应项的索引
  2. lastIndexOf(): 接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。从数组的末尾开始向前查找,返回找到的第一个对应项的索引

F. 数组的迭代方法

  1. every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true
  2. some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true
  3. filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
  4. forEach():对数组中的每一项运行给定函数。这个方法没有返回值
  5. map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
var numbers = [1,2,3,4,5,4,3,2,1]

var everyResults = numbers.every(function(item, index, array){
return (item>2);
});
alert(everyResults);   //false. 不是所有的Item都大于2

var someResults = numbers.every(function(item, index, array){
return (item>2);
});
alert(someResults);   // true, 有大于2的item

var filterResults = numbers.every(function(item, index, array){
return (item>2);
});
alert(filterResults);   //[3,4,5,4,3] 返回大于2的Item

var mapResults = numbers.every(function(item, index, array){
return (item*2);
});
alert(mapResults);   //[2,4,6,8,10,8,6,4,2]  返回乘以2以后的数组

相关文章

网友评论

    本文标题:JavaScript 学习 (2) -- 数组

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