zoukankan      html  css  js  c++  java
  • 引用类型-Array类型(二)~ 前端学习之路

    昨天记录了栈方法和队列方法。今天把余下的几种方法也记录下来。

    (一)重排序方法

    reverse()方法可以反转数组的顺序。例如:

    var num=[1,4,5,2,7];

    num.reverse();

    alert(num);//输出7,2,5,4,1

    sort()方法则是按升序排列数组,即从小到大排列。sort()方法会调用每个数组项的toString(),然后比较得到的字符串(要记住sort()方法比较的是字符串)。

    因为比较的是字符串所以会有一点问题发生。例如:

    var num=[0,5,1,15,10];

    num.sort();

    alert(num); //输出0 1 10 15 5

    出现这问题的原因是sort()比较的是字符串,因此我们可以让sort()接收一个比较函数作为参数。例如:

    function compare(value1,value2){

             if(value1<value2){

                  return -1;

            }else if(value1>value2){

                 return 1;

           }else{

                 return 0;

          }

    }

    var num=[0,5,1,15,10];

    num.sort(compare);

    alert(num);// 0,1,5,10,15

    要想降序的话调换一下上边compare的返回值。

    (二)操作方法

    concat()方法可以基于当前数组中的所有项创建一个新的数组。具体来说,先创建当前数组的副本,再把接收到的参数放在新数组的末尾并且返回新数组。例如:

    var color=["red","black","blue"];

    var color2=color.concat("white",["yellow","green"]);

    alert(color2);//red black blue white yellow green

    slice()方法可基于当前数组中的一或多个项创建数组,可接收一或两个参数,即要返回项的起始和结束位置。(这里要记住的是返回项中不包括结束位置的项)

    var color=["red","black","blue","white"];

    var color2=color.slice(2);

    alert(color2); //输出 red black

    var color3=color.slice(1,3);

    alert(color3); 输出 black blue

    如果slice()方法参数是负数的话,就用数组的长度加上该参数。

    splice()方法可用于向数组的中部插入项。使用这种方法的方式有三种,删除,插入和替换。最后返回被移除的项

    当指定两个参数时:要删除第一项的位置和删除的项数。

    当指定三个参数时:起始位置 要删除的项数 要插入的项

    var color=["red","black","blue","white"];

    var remove=color.splice(0,1);

    alert(color); //输出black blue white

    alert(remove);//输出red

    remove=color.splice(1,0,"green","yellow");

    alert(color);//black green yellow blue white

    alert(remove);//返回一个空数组

    remove=color.splice(1,1,"red","purple");

    alert(color);//输出black red purple yellow blue white

    alert(remove);//输出green

    (三)位置方法

    indexOf()和lastIndexOf()方法,接受两个参数:查找的项 开始位置  indexOf()从数组开头开始找,lastIdexOf()从数组末尾开始找。

    (四)迭代方法

    JS为数组定义了5个迭代方法 every() filter() forEach() map() some(). 每个方法都接收两个参数:要在每一项运行的函数和(可选的)运行该函数的作用域对象。

    首先传入这些方法的函数会接收三个参数:数组项的值  该项在数组中的位置  数组对象本身

    every()和some()方法最为相似,every()方法是如果该函数对每一项都返回true,则返回true(请记住,是每一项!!) 而 some()方法是任意一项返回true,则返回true

    例如:

    var num=[1,2,3,4,5,4,3,2,1];

    var everyRuselt=num.every(function(item,index,array){

                    return item>2;

    });

    alert(everyRuselt); //输出false

    var someRuselt=num.some(function(item,index,array){

                   return item>2;

    });

    alert(someRuselt);//输出true

    filter()方法会返回函数中true的项组成的数组,例如

    var num=[1,2,3,4,5,4,3,2,1];

    var filterRuselt=num.filter(function(item,index,array){

                  return item>2

    });

    alert(filterRuselt);//输出[3,4,5,4,3]

    map()方法会返回每次函数调用的结果组成的数组

    var num=[1,2,3,4,5,4,3,2,1];

    var mapRuselt=num.map(function(item,index,array){

                    return item*2;

    });

    alert(mapRuselt);//输出 [2,4,6,8,10,8,6,4,2]

    最后一种方法是forEach()这个方法没有返回值,它只是对数组中的每一项运行传入函数。与for循环迭代数组本质一样

    var num=[1,2,3,4,5,4,3,2,1];

    num.forEach(function(item,index,array){

                  //执行一些操作

    });

    (五)归并方法

    reduce()和reduceRight(),这两个方法都会迭代数组的所有项,前者从数组第一项开始遍历,后者从数组最后一项开始遍历。

    这两个方法都接收两个参数:在每一项上调用的函数和(可选的)作为归并基础的初始值

    传给这两个方法的函数有四个参数:前一个值  当前值  项的索引  数组对象

    例如:

    var num=[1,2,3,4,5];

    var sum=num.reduce(function(prev,cur,index,array){

                           return prev+cur;

    });

    alert(sum); //输出15

  • 相关阅读:
    等你在清华
    印度教导的灵性四句话
    印度“人棍”男孩,用头部自理生活,坚挺过着生活
    观看纯净版优酷视频
    自定义联通话费充值
    windows实用工具
    计算机书籍下载
    文档下载冰点文库
    python读文件的三个方法read()、readline()、readlines()详解
    POJ 3661 Running(dp背包)
  • 原文地址:https://www.cnblogs.com/guoxihong/p/5368210.html
Copyright © 2011-2022 走看看