引用类型之Array

作者: baiying | 来源:发表于2017-07-28 21:09 被阅读12次

创建

  • Array构造函数
let colors = new Array();
let colors = new Array(20);
let colors = new Array('red','blue');

构造函数创建数组时也可以省略new关键字

  • 字面量
let colors =['red','blue'];
let colors = [];

与对象一样,在使用字面量创建数组时,不会调用 Array构造函数

检测数组

  • instanceof: colors instanceof Array;
  • Array.isArray():Array.isArray(colors);
    对于一个网页 或者一个全局作用域而言,使用insanceof就可以得到想要的结果,一旦存在两个以上不同的全局环境,它不能得到我们想要的结果,因而就出现了Array.isArray()

转换方法

  • valueof():返回数组自身
  • toString():返回由数组中每个值的字符串形式拼接而成的以逗号分隔的字符串
  • toLocaleString():通常也返回数组字符串形式组成的以逗号分隔的字符串
  • join():可以选择使用不同的分隔符来分隔字符串
let colors = ['red','blue'];
let ts = colors.toString();
let tls = colors.toLocaleString();
let v = colors.valueOf();
let j = colors.join(';');

console.log(ts);
console.log(tls);
console.log(v);
console.log(j);
//结果
"red,blue"
"red,blue"
["red", "blue"]
"red;blue"

栈&队列方法

  • pop():从数组末尾移除一项并返回这一项
  • push():从数组末尾添加一项并返回新数组的长度
  • shift():移除数组中的第一项并返回这一项
  • unshift():在数组前端添加项并返回新的数组长度

重排序方法

  • reverse():反转数组项的顺序
  • sort():按照升序排列数组项
let num1= [1,5,3,7,0];
let num2 = [12,21,5,4,0];

console.log(num1.sort());
console.log(num1.reverse());
console.log(num2.sort());
console.log(num2.reverse());
//结果
[0, 1, 3, 5, 7]
[7, 5, 3, 1, 0]
[0, 12, 21, 4, 5]
[5, 4, 21, 12, 0]

在某些情况下这两个方法能满足我们的需求,但有些情况却不可以,因为这两个方法在排序时将数组项都转换成字符串再进行排序,所以对于有些数值不能正确排序
为了解决这个问题,可以sort()方法接收一个比较函数作为参数,以便我们指定哪个值应该排在前边

//比较函数
function compare(value1,value2){
  if(value1 < value2){
    return -1;
  }
  else if(value1>value2){
    return 1;
  }
  else{
    return 0;
  }
}

//当数组项都是数值时,可将比较函数简化为compare1
function compare1(value1,value2){
return value1-value2;
}

let num = [1,23,0,5,7];
let colors = ['red','blue','pink'];

console.log(num.sort(compare));
console.log(colors.sort(compare));
//结果
[0, 1, 5, 7, 23]
["blue", "pink", "red"]

实现逆序只需要在比较函数中调换两个参数即可

操作方法

  • concat():基于当前数组项创建一个新数组,并且将参数中项追加到新数组之后
  • splice():
    • splice(start,count):删除从start位置起始的count项
    • splice(start,count,value):删除从start位置起始的count项并且插入后边的参数

位置方法

  • indexOf():返回指定项在数组中的位置,从前往后找,可指定起始位置
  • lastIndexOf():返回指定项在数组中的位置,从后往前找,可指定起始位置

迭代方法

  • every():对数组中的每一项运行指定函数,若每一项该函数都返回true,则最终返回true
  • filter():对数组中的每一项运行指定函数,返回该函数返回true的项组成的数组
  • forEach():对数组中的每一项运行指定函数,无返回值
  • map():对数组中的每一项运行指定函数,返回每次函数调用的结果组成的数组
  • some():对数组中的每一项运行指定函数,只要有返回true的项则最终返回true,否则返回false
let nums = [1,3,4,6,5];

let evenum = nums.every(function(item,index,array){
  return (item>0);
});

let filnum = nums.filter(function(item,index,array){
  return (item > 3);
});

let mapnum = nums.map(function(item,index,array){
  return item+1;
});

let somenum = nums.some(function(item,index,array){
  return item >5;
});

nums.forEach(function(item,index,array){
  item = item+1;
});

console.log(evenum);
console.log(filnum);
console.log(mapnum);
console.log(somenum);
//结果
true
[4, 6, 5]
[2, 4, 5, 7, 6]
true

归并方法

  • reduce():从前到后迭代数组中的每一项,构建一个最终的返回值
  • reduceRight():从后往前迭代数组中的每一项,构建一个最终的返回值
let nums = [1,3,4,6,5];

let sum = nums.reduce(function(pre,cur,index,array){
  return pre+cur;
});

let sumright = nums.reduce(function(pre,cur,index,array){
  return pre+cur;
});

console.log(sum); //19
console.log(sumright);//19

相关文章

  • 引用类型之Array

    创建 Array构造函数 构造函数创建数组时也可以省略new关键字 字面量 与对象一样,在使用字面量创建数组时,不...

  • javascript引用类型之Array 类型

    在javascript编程学习中,除了 Object 之外,Array 类型恐怕是最常用的类型了。javascri...

  • javaScript引用类型之Array

    总结Array常用的18个api 栈方法(LIFO数据结构--last in first out ...

  • 引用类型之 Array(二)

    本章将介绍 Array 的构造函数的属性,也就是 prototype 上的方法,这一节内容挺多的。所以理解和消化需...

  • 系统学习 JavaScript 的笔记【7】

    引用类型 引用类型分为 object 类型 Array 类型,我个人觉得 Array 的重点能多一些,因此我主要总...

  • 引用类型 - Array 类型

    Array构造函数 当Array被当做一个函数调用时,也会创建并初始化一个新的Array对象。因此,当参数相同时,...

  • 引用类型-Array类型

    EAMAScript数组的每一项可以保存任何类型的数据 1.创建数组 使用Array构造函数 数组字面量方法 2....

  • 引用类型—Array类型

    ECMAScript数组与其它语言数组一样,都是数据的有序列表。但是ECMAScript数组的每一项可以保存任何类...

  • 引用类型与对象拷贝

    1.引用类型有哪些?非引用类型有哪些引用类型:Object / Array / Function / Date /...

  • 引用类型与对象拷贝

    引用类型有哪些?非引用类型有哪些 引用类型:Object、Array、Date、RegExp、Function、M...

网友评论

    本文标题:引用类型之Array

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