数组的方法有很多,这里简单整理下常用的21种方法,并且根据它们的作用分了类,便于记忆和理解.

根据是否改变原数组,可以分为两大类,两大类又根据不同功能分为几个小类

一.操作使原数组改变

 
1.数组的增
  unshift(data1,data2...) 
  向数组的首位增加若干个元素,返回新的长度
var arr = [1,2,3];
var str = arr.unshift(0,0,0);
console.log(str);         //6(length)
console.log(arr);         // [0, 0, 0, 1, 2, 3]

  push(data1,data2...)

  向数组的末位增加若干个元素,返回新的长度

var arr = [1,2,3];
var str = arr.push(6,6,6);
console.log(str);        //6(length)
console.log(arr);        //[1, 2, 3, 6, 6, 6] 原数组改变

2.数组的删

  shift()

  删除并返回数组最前一个元素

var arr = [1,2,3];
console.log(arr.pop()); //1(元素)
console.log(arr); //[2,3] 原数组改变

  pop()

  删除并返回数组最后一个元素

var arr = [1,2,3];
console.log(arr.pop()); //3(元素)
console.log(arr); //[1,2] 原数组改变

3.数组的改

  splice(start,n,data1,data2...)参数可选

  删除数组中的元素,并添加新的元素
 var arr = ["A","B","C","D","E"];
console.log(arr.splice(,,"a","b")); //[]
console.log(arr);            //["A", "B", "a", "b", "C", "D", "E"] 原数组改变

4.其他

  sort()

  对数组中元素排序(字符方法),默认是升序

var arr = [,,,,];
console.log(arr.sort()); //[1, 2, 3, 4, 5]
console.log(arr); //[1, 2, 3, 4, 5] 原数组改变

  reserve()

  反转数组中元素的顺序

var arr = [,,];
console.log(arr.reverse()); //[3,2,1]
console.log(arr); //[3,2,1] 原数组改变
二.原数组不改变
1.数组转字符
  toString()
  将数组转化为字符,相当于不传参的join
var arr=["夜","的","第","七","章"] ;
var str=arr.toString();
console.log(str);  //夜,的,第,七,章  原数组不改变

  join()

  用指定分隔符将数组转化为字符,若不传参,默认为逗号

 var arr = [1,2,3];
console.log(arr.join()); //1,2,3
console.log(arr.join("-")); //1-2-3
console.log(arr); //[1,2,3] 原数组未改变

2.数组的遍历

  forEach()

  遍历数组;内部接收callback,callback有三个参数,分别为元素,索引,自身,没有返回值

 var arr = ["A","B","C","D","E"];
var a = arr.forEach(function(value,index,self){
console.log(value + "--" + index + "--" + (arr === self));
})
// 打印结果:
// A--0--true
// B--1--true
// C--2--true
// D--3--true
// E--4--true
console.log(a); //undefined(没有返回值)

  map()

  遍历并修改,基本等同于forEach,不过可以有返回值

var arr = ["A","B","LC","D","E"];
var a = arr.map(function(value,index,self){
return "hi:"+value;
})
console.log(a); //["hi:A", "hi:B", "hi:C", "hi:D", "hi:E"]

  filter()

  遍历并筛选,回调函数内写判断条件,返回符合条件的值组成的数组

 var arr = ["AAA","BBB","CCC","DDD","EEEE"];
var a = arr.filter(function(value,index,self){
return value.length > 3;
})
console.log(a); //["EEEE"]
   every()
  遍历并判断,每一项都符合条件返回true,有一项为false时停止,返回false

  some()

  遍历并判断(与every相反),只要一项条件符合就返回true,每一项都不符合返回false

var arr =["AAA","BBB","CCCC","DDD","EEEE"];
var a = arr.every(function(value,index,self){
console.log(value + "--" + index + "--" + (arr == self))
return value.length < 4; }) 
//AAA--0--true BBB--1--true 
var arr =["AAA","BBB","CCCC","DDD","EEEE"]; 
var a = arr.some(function(value,index,self){
console.log(value + "--" + index + "--" + (arr == self))
return value.length < 4; }) //AAA--0--true

   reduce()

  归并.从数组的第一项开始,逐个遍历到最后,迭代数组的所有项,然后构建一个最终返回的值。

  reduce(callback,initial) 有两个参数,callback和initial,回调函数内四个值分别是前一项,当前项,索引,自身;initial为初始值,可选

  reduceRight() : 反向归并,用法和reduce一样,顺序相反


var arr = [10,20,30,40,50];
    var sum = arr.reduce(function(prev,now,index,self){
        return prev + now;
    })
    console.log(sum);      //150
var arr = [10,20,30,40,50];
var sum = arr.reduce(function(prev,now,index,self){
return prev + now;
}, 6)           //初始值6
console.log(sum); //
3.其他
  slice(m,n)
  从m位开始截取n位元素,当n省略或n=0时,选取元素直到最后一位;
  m<0或n<0时,表示从最后一位开始算起 
var arr = ["A","B","C","D","E"];
console.log(arr.slice(1,3)); //["B","C"]
console.log(arr.slice(1)); //["B","C","D","E"]
console.log(arr.slice(-4,-1)); //["B","C","D"]
console.log(arr.slice(-2)); //["D","E"]
console.log(arr.slice(1,-2)); //["B","C"]
console.log(arr); //["A","B","C","D","E"]

  indexOf()

  从左向右查询值在数组中的位置,返回索引,若没有查到返回-1

  有两个参数value和start,start表示从第几位开始找

 var arr = ["h","e","l","l","o"];
console.log(arr.indexOf("l")); //
console.log(arr.indexOf("l",3)); //
console.log(arr.indexOf("l",4)); //-1

  lastIndexOf()

  从右向左查询值在数组中的位置(与indexOf顺序相反),返回索引,若没有查到返回-1

  有两个参数value和start,start表示从第几位开始找

    var arr = ["h","e","l","l","o"];
console.log(arr.lastIndexOf("l")); //
console.log(arr.lastIndexOf("l",3)); //
console.log(arr.lastIndexOf("l",1)); //-1

下方是一张整理的表格:

方法名 对应版本 功能 原数组是否改变
pop() ES5- 删除最后一位,并返回删除的数据 y
shift() ES5- 删除第一位,并返回删除的数据 y
unshift() ES5- 在第一位新增一或多个数据,返回长度 y
push() ES5- 在最后一位新增一或多个数据,返回长度 y
reverse() ES5- 反转数组,返回结果 y
sort() ES5- 排序(字符规则),返回结果 y
splice() ES5- 删除指定位置,并替换,返回删除的数据 y
valueOf() ES5- 返回数组对象的原始值 n
indexOf() ES5 查询并返回数据的索引 n
lastIndexOf() ES5 反向查询并返回数据的索引 n
forEach() ES5

参数为回调函数,会遍历数组所有的项,回调函数接受三个参数,分别为value,index,self;没有返回值

n
map() ES5 同forEach,同时回调函数返回数据,组成新数组由map返回 n
filter() ES5 同forEach,同时回调函数返回布尔值,为true的数据组成新数组由filter返回 n
every() ES5 同forEach,同时回调函数返回布尔值,全部为true,由every返回true n
some() ES5 同forEach,同时回调函数返回布尔值,只要由一个为true,由some返回true n
reduce() ES5 归并,同forEach,迭代数组的所有项,并构建一个最终值,由reduce返回 n
reduceRight() ES5 反向归并,同forEach,迭代数组的所有项,并构建一个最终值,由reduceRight返回 n
concat() ES5- 合并数组,并返回合并之后的数据 n
join() ES5- 使用分隔符,将数组转为字符串并返回 n
slice() ES5- 截取指定位置的数组,并返回 n
toString() ES5- 直接转为字符串,并返回 n
 

js中数组方法及分类的更多相关文章

  1. js中数组方法大全

    js数组方法大全 一:前言 我们在学到js中数组的时候,我们会接触到js中数组的一些方法,这些方法对我们来说,可以很遍历的达到我们想要的结果,但是因为方法比较多,有些方法也不常用,可能会过一段时间就会 ...

  2. JS中数组方法的封装之slice

    slice方法的功能 // 1) : 数组的截取 // 2) :slice(m,n): 从数组索引m开始,截取到索引n,但是不包含n;[前包后不包] // slice(m) : 从索引m开始,截取到末 ...

  3. JS中数组方法小总结

    1.array.concat(item……) 返回:一个新数组 该方法产生一个新数组,它包含一份array的浅复制,并把一个或多个参数item附加在其后.如果参数item是一个数组,那么它的每个元素会 ...

  4. js中数组去重的几种方法

    js中数组去重的几种方法         1.遍历数组,一一比较,比较到相同的就删除后面的                 function unique(arr){                 ...

  5. JavaScript -- 时光流逝(二):js中数组的方法

    JavaScript -- 知识点回顾篇(二):js中数组的方法 1. 数组 (1)定义数组,数组赋值 <script type="text/javascript"> ...

  6. js中split()方法得到的数组长度

    js 中split(",")方法通过 ”,“ 分割字符串, 如果字符串中没有 “,” , 返回的是字符串本身 var str = “abc”://分隔符个数为0 var newSt ...

  7. js中数组去重方法及性能对比

    js中数组的 数组去重 常用的数组去重方法以及效率分析: 首先我们先构建一个数组,主要是用于进行去重实验,我们主要实验的量级为1000,10000,100000,500000.具体的生成数组的方法如下 ...

  8. JS中数组的介绍

    一.数组: 一组数据的集合: 二.JS中数组的特点: 1.数组定义时无需指定数据类型: 2.数组定义时可以无需指定数组长度: 3.数组可以存储任何类型的数据: 4.一般是相同的数据类型: 三.数组的创 ...

  9. 原生JS中apply()方法的一个值得注意的用法

    今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...

随机推荐

  1. maven打包遇到错误,Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test

    对Pom文件进行配置(亲自尝试,已成功解决) <build> <plugins> <plugin> <groupId>org.apache.maven. ...

  2. Qt编写自定义控件21-圆弧仪表盘

    一.前言 圆弧仪表盘在整个自定义控件大全中也稍微遇到了技术难点,比如背景透明,如果采用以前画圆形画扇形的方式绘制,肯定很难形成背景透明,需要用到切割,最后换了一种绘制方法,采用绘制圆弧的方式,即使用d ...

  3. vim基础学习1---简单命令

    1:vim abc:如果有abc文件,则打开,否则创建之后打开 2:输入"i",才可以输入东西 3:按Esc,它是底行模式,再敲":wq 回车" 保存退出. 4 ...

  4. JAVA 基础编程练习题47 【程序 47 打印星号】

    47 [程序 47 打印星号] 题目:读取 7 个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*. package cskaoyan; public class cskaoyan47 { ...

  5. 关于react中遇到的问题记录说明

    5.el表达式 dataSource = (userPage, orgList) => userPage.map(item => { const org = orgList.find(or ...

  6. xampp 启动mysql 显示busy

    1.端口被占用问题:2.默认3306端口并没有被占用:3.删除xampp\mysql\data\下的ibdata1再重启:4.没装其他mysql.

  7. RMQ问题--ST

    #include<iostream> #include<cstdio> #include<cmath> using namespace std; ; ]; int ...

  8. 【VS开发】图像颜色

    版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/lg1259156776/. 最近被图像颜色整的乱七八糟的,一会儿YUV422,一会儿RGB,一会儿gray... ...

  9. python第二部分

    什么数据类型? int 1, 2, 3 用来运算的 float 1.2 str 用来存储一定的信息"" '' list =[1,2 ,3 "有", 是]用来存储 ...

  10. Linux 重启php

    对于高版本PHP, 例如PHP 5.6, 重启PHP命令: service php-fpm restart 如果提示权限不足, 请使用: 1 sudo service php-fpm restart