zoukankan      html  css  js  c++  java
  • 数组方法整理

    Array对象具有下列方法:

    拼接

    concat() 连接两个数组并返回一个新的数组,不改变原数组。

    var myArray = new Array("1", "2", "3");
    myArray = myArray.concat("a", "b", "c"); 
    // myArray is now ["1", "2", "3", "a", "b", "c"]

    转换

    join(sep) 把数组的每一项用sep链接起来,返回连接后的字符串,如果Array的元素不是字符串,将自动转换为字符串后再连接。

    var myArray = new Array("Wind", "Rain", "Fire");
    var list = myArray.join(" - "); // list is "Wind - Rain - Fire"

    添加

    push() 在数组末尾添加一个或多个元素,并返回数组操作后的长度。

    var myArray = new Array("1", "2");
    myArray.push("3"); // myArray is now ["1", "2", "3"]

    unshift() 在数组开头添加一个或多个元素,并返回数组的新长度。

    var myArray = new Array ("1", "2", "3");
    myArray.unshift("4", "5"); 
    // myArray becomes ["4", "5", "1", "2", "3"]

    移除

    pop() 从数组移出最后一个元素,并返回该元素。

    var myArray = new Array("1", "2", "3");
    var last = myArray.pop(); 
    // myArray is now ["1", "2"], last = "3"

    shift() 从数组移出第一个元素,并返回该元素。

    var myArray = new Array ("1", "2", "3");
    var first = myArray.shift(); 
    // myArray is now ["2", "3"], first is "1"

    截取

    slice(start_index, upto_index) 从数组提取一个片段,并作为一个新数组返回。

    var myArray = new Array ("a", "b", "c", "d", "e");
    myArray = myArray.slice(1, 4); // starts at index 1 and extracts all elements
                                   // until index 3, returning [ "b", "c", "d"]

    splice(index, how, item1, item2, ...)从index开始数组移出how个元素,用itemn替换它们。

    var myArray = new Array ("1", "2", "3", "4", "5");
    myArray.splice(1, 3, "a", "b", "c", "d"); 
    // myArray is now ["1", "a", "b", "c", "d", "5"]
    // This code started at index one (or where the "2" was), 
    // removed 3 elements there, and then inserted all consecutive
    // elements in its place.

    排序

    reverse() 颠倒数组元素的顺序:第一个变成最后一个,最后一个变成第一个。

    var myArray = new Array ("1", "2", "3");
    myArray.reverse(); 
    // transposes the array so that myArray = [ "3", "2", "1" ]

    搜索

    indexOf(item, Index) 在数组中从index开始搜索item 并返回第一个匹配的索引,找不到返回-1

    var a = ['a', 'b', 'a', 'b', 'a'];
    console.log(a.indexOf('b')); // logs 1
    // Now try again, starting from after the last match
    console.log(a.indexOf('b', 2)); // logs 3
    console.log(a.indexOf('z')); // logs -1, because 'z' was not found

    lastIndexOf() 和 indexOf 差不多,但这是从结尾开始,并且是反向搜索。

    var a = ['a', 'b', 'c', 'd', 'a', 'b'];
    console.log(a.lastIndexOf('b')); // logs 5
    // Now try again, starting from before the last match
    console.log(a.lastIndexOf('b', 4)); // logs 1
    console.log(a.lastIndexOf('z')); // logs -1

    遍历

    forEach(callback[, thisObject]) 在数组每个元素项上执行callback

    var a = ['a', 'b', 'c'];
    a.forEach(function(element) { console.log(element);} ); 
    // logs each item in turn

    高阶函数

    map() 在数组的每项上执行callback函数,返回回调函数返回值的新数组

    var a1 = ['a', 'b', 'c'];
    var a2 = a1.map(function(item) { return item.toUpperCase(); });
    console.log(a2); // logs A,B,C

    reduce() 这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算,效果如下例:

    var a = [10, 20, 30];
    var total = a.reduce(function(first, second) { return first + second; }, 0);
    console.log(total) // Prints 60
    
    
    // 比方说对一个Array求和
    var arr = [1, 3, 5, 7, 9];
    arr.reduce(function (x, y) {
        return x + y;
    }); // 25

    reduceRight(callback[, initalvalue]) 和 reduce()相似,但这从最后一个元素开始的。

    sort() 给数组元素排序。

    var arr = [10, 20, 1, 2];
    arr.sort(function (x, y) {
        if (x < y) {
            return -1;
        }
        if (x > y) {
            return 1;
        }
        return 0;
    }); // [1, 2, 10, 20]

    过滤

    filter() 返回一个包含所有在回调函数上返回为true的元素的新数组

    var a1 = ['a', 10, 'b', 20, 'c', 30];
    var a2 = a1.filter(function(item) { return typeof item == 'number'; });
    console.log(a2); // logs 10,20,30

    every(callback[, thisObject]) 当数组中所有元素在callback上都返回true时就返回true

    function isNumber(value){
      return typeof value == 'number';
    }
    var a1 = [1, 2, 3];
    console.log(a1.every(isNumber)); // logs true
    var a2 = [1, '2', 3];
    console.log(a2.every(isNumber)); // logs false

    some(callback[, thisObject]) 只要数组中有一项在callback上被返回true,就返回true

    function isNumber(value){
      return typeof value == 'number';
    }
    var a1 = [1, 2, 3];
    console.log(a1.some(isNumber)); // logs true
    var a2 = [1, '2', 3];
    console.log(a2.some(isNumber)); // logs true
    var a3 = ['1', '2', '3'];
    console.log(a3.some(isNumber)); // logs false

      

    推导式

    下面的推导式创建一个数字数组并且创建一个新的数组,数组的每个元素都是原来数值的两倍

    var numbers = [1, 2, 3, 4];
    var doubled = [i * 2 for (i of numbers)];
    console.log(doubled); // logs 2,4,6,8

    这跟下面的map()方法的操作是等价的。

    var doubled = numbers.map(function(i){return i * 2;});

    推导式也可以用来筛选满足条件表达式的元素. 下面的推导式用来筛选是2的倍数的元素:

    var numbers = [1, 2, 3, 21, 22, 30];
    var evens = [i for (i of numbers) if (i % 2 === 0)];
    console.log(evens); // logs 2,22,30
  • 相关阅读:
    Android Studio卡在refreshing gradle project的原因和快速解决办法
    ScrollView 嵌套 ListView 时,刷新页面时,会出现 自动 滚动至listview 的区域 解决方案:
    [WebView]不显示img标签
    Android 使用代码设置selector 的图片或文字颜色
    Android httpClient.jar 在Android Studio 中的使用方法
    Android studio Error:(30, 31) 错误: 程序包 不存在
    Using newInstance() to Instantiate a Fragment
    SpringBoot05_mysql数据库配置
    SpringBoot04_controller类中注解对url及url参数的使用
    SpringBoot03_自定义属性配置
  • 原文地址:https://www.cnblogs.com/gr07/p/7767691.html
Copyright © 2011-2022 走看看