zoukankan      html  css  js  c++  java
  • JS数组操作

    1.栈方法:push方法可向数组的末尾添加一个或多个元素,并返回新的长度,pop方法删除数组最后一个,并返回删除的值  

    var a=new Array(1,2,3);
    a.push(4);
    console.log(a);//[1, 2, 3, 4]
    console.log(a.length);//4
    console.log(a.pop());//4
    console.log(a); //[1, 2, 3]
    console.log(a.length);//3

    2.队列方法:shift方法用于把数组的第一个元素从其中删除,并返回第一个元素的值,并使后面元素index都减一,length也减一,unshift方法,可向数组的开头添加一个或更多元素,并返回新的长度

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

    var b = arr.shift();
    alert(arr.length + " ====== " + arr + "=======>" + b);//4=====2,3,4,5======1

    arr.unshift(-1);
    alert(arr.length + " ====== " + arr);//5=====-1,2,3,4,5

    3.重排序方法:数组中已经存在两个重新排序的方法,reverse()和sort(),其中reverse()仅仅用来反转数组顺序

    var a = [1,8,9,12,21,2];
    a.reverse();
    alert(a); //[2,21,12,9,8,1];

    但是这个样子,比较排序数字就不是很好了,但是sort方法可以接收一个比较函数当作参数,以便指定哪个值位于哪个值前面。这个函数很简单,有两个参数,如果第一个参数位于第二个参数之前。返回负数,如果相等,返回0。反之,则返回正数:
    function compare(value1,value2){
    if(value1 < value2){
    return -1;
    }else if(value1 > value2){
    return 1;
    }else{
    return 0;
    }
    }

    当然也可以非常简单的写成这个样子:

    function compare(value1,value2){
    return value1 - value2;
    }

    只要将这个函数传递给sort即可:
    var values = [0, 1, 5, 10, 15];
    values.sort(compare);
    alert(values); //0,1,5,10,15

    当然,如果要降序排列的话,改变一下负数和正数的方向即可


    function compare(value1,value2){
    if(value1 < value2){
    return 1;
    }else if(value1 > value2){
    return -1;
    }else{
    return 0;
    }
    }

    4.操作方法:_concat()方法用于拼接数组,a.concat(b)返回一个a和b共同组成的新数组(a,b均为数组),__slice()__根据传入参数,返回当前数组中的一个或者多个项创建一个新数组,__slice()方法不会影响原数组__,slice()方法可以接收一个或两个参数,即数组的开始和结束位置

    var colors = ["red", "green", "blue"];
    var colors2 = colors.concat("yellow", ["black", "brown"]);
    alert(colors); //red,green,blue
    alert(colors2); //red,green,blue,yellow,black,brown

    var colors = ["red", "green", "blue", "yellow", "purple"];
    var colors2 = colors.slice(1);
    var colors3 = colors.slice(1,4);
    alert(colors2); //green,blue,yellow,purple
    alert(colors3); //green,blue,yellow

    5.splice方法:只有第一个参数是从数组左边开始截取几个,第二个参数是删除第一个参数数字后面的几位,后面的是依次添加在后面的

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

    arr.splice(1,1,'red','blue');
    alert(arr);//1,red,blue,3,4,5

    6. 位置方法:__indexOf()和lastIndexOf()__,这两个方法都接收两个参数:要查找的项和表示要查找位置的索引(可选),区别只是一个从开头开始找,一个从尾部开始找。

    var numbers = [1,2,3,4,5,4,3,2,1];
    alert(numbers.indexOf(4)); //3
    alert(numbers.lastIndexOf(4)); //5
    alert(numbers.indexOf(4, 4)); //5
    alert(numbers.lastIndexOf(4, 4)); //3
    var person = { name: "Nicholas" };
    var people = [{ name: "Nicholas" }];
    var morePeople = [person];
    alert(people.indexOf(person)); //-1
    alert(morePeople.indexOf(person)); //0

    7.迭代方法

    var arr = [8,2,10,5,6,7];

    var sum = 0;

    //相当于for循环,该方法没有返回值
    arr.forEach(function(item,index,a){
    if(index % 2 == 0){
    sum += item;
    }

    });
    alert(sum);  //24


    var flag = arr.some(function(item,index,a){
    if(item > 9){
    return true;
    }
    });

    alert(flag);  //ture

    //过滤

    var newArr = arr.filter(function(item,index,a){
    return item > 3;
    });

    alert(newArr);

    //操作

    var newArr = arr.map(function(item,index,a){
    return item*3;
    });


    alert(newArr);

    //把逗号改成-

    var arr = [2,3,4556,56,767,67,78];

    var str = arr.join('-');

    alert(str);

    ECMAScript5为数组定义了5个迭代方法。每个方法都接受两个参数,第一个是进行迭代的函数,第二个是该函数的作用域对象【可选】。

    进行迭代的函数接受三个参数,第一个是数组中要进行迭代的元素的值,第二个是数组候总要进行迭代的元素的位置,第三个是迭代数组本身。
    1. every()对数组中的每一项运行给定的函数,如果该函数对每一项都返回true,则返回true。
    2. filter() 对数组中的每一项运行给定的函数,返回该函数返回true的项组成的数组。
    3. forEach() 对数组中的每一项运行给定的函数,这个方法没有返回值
    4. map() 对数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组
    5. some()对数组中的每一项运行给定的函数,如果该函数对任意一项返回true,则返回true。
    使用起来非常的简单方便,直接看下例子:
    ```javascript
    var num = [1,2,3,4,5,6,7,8,9];
    var everyResult = num.every(function(item, index, array) {
    if(item > 2) {
    return true;
    }
    });
    alert(everyResult);

    var someResult = num.some(function(item) {
    if(item > 2) {
    return true;
    }
    });
    alert(someResult);

    var filterResult = num.filter(function(item) {
    if(item > 2) {
    return true;
    }
    });
    alert(filterResult);

    var mapResult = num.map(function(item) {
    if(item > 2) {
    return true;
    }
    });
    alert(mapResult);

    var forEachResult = num.forEach(function(item) {
    if(item > 2) {
    return true;
    }
    });
    alert(forEachResult);
    ```

  • 相关阅读:
    Charles的基本功能使用
    模拟器的代理功能
    LoadRunner参数包含逗号
    MySQL 与 [charlist]% 通配符
    MySQL 删除重复项并保留其中一个
    Selenium grid 分布式测试搭建(二)
    Selenium grid 分布式测试搭建(一)
    chromedriver与chrome版本映射表 与chromedriver 下载地址
    Selenium 打开 Chrome 链接框只有 Data;
    Xpath 小结
  • 原文地址:https://www.cnblogs.com/yanjialin/p/4096048.html
Copyright © 2011-2022 走看看