zoukankan      html  css  js  c++  java
  • Es5数组新增的方法及用法

    1.forEach
    forEach是Array新方法中最基本的一个,就是遍历,循环。例如下面这个例子:

    [1, 2 ,3, 4].forEach(alert);
    等同于下面这个传统的for循环:

    var array = [1, 2, 3, 4];

    for (var k = 0, length = array.length; k < length; k++) {
    alert(array[k]);
    }
    forEach方法中的function回调支持3个参数,第1个是遍历的数组内容;第2个是对应的数组索引,第3个是数组本身。

    [].forEach(function(value, index, array) {
        // ...
    });

    jQuery中的$.each方法:

    $.each([], function(index, value, array) {
        // ...
    });

    var sum = 0;

    [1, 2, 3, 4].forEach(function (item, index, array) {
    console.log(array[index] == item); // true
    sum += item;
    });

    alert(sum); // 10
    2.map

    var data = [1, 2, 3, 4];

    var arrayOfSquares = data.map(function (item) {
    return item * item;
    });

    alert(arrayOfSquares); // 1, 4, 9, 16
    callback需要有return值,如果没有,就会是undefined

    3.filter
    filter为“过滤”、“筛选”之意。指数组filter后,返回过滤后的新数组。用法跟map极为相似:

    var data = [0, 1, 2, 3];
    var arrayFilter = data.filter(function(item) {
        return item;
    });
    console.log(arrayFilter); // [1, 2, 3]
    返回值只要是弱等于== true/false就可以了,而非非得返回 === true/false.
    4.some
    some意指“某些”,指是否“某些项”合乎条件。与下面的every算是好基友,every表示是否“每一项”都要靠谱。

    some要求至少有1个值让callback返回true就可以了

    var scores = [5, 8, 3, 10];
    var current = 7;

    function higherThanCurrent(score) {
    return score > current;
    }

    if (scores.some(higherThanCurrent)) {
    alert("通过了!");
    }

    5.every
    some的基友关系已经是公开的秘密了,同样是返回Boolean值,不过,every需要每一个妃子都要让朕满意,否则——“来人,给我拖出去砍了!”

    6.indexOf

    返回整数索引值,如果没有匹配(严格匹配),返回-1fromIndex可选,表示从这个位置开始搜索,若缺省或格式不合要求,使用默认值0。

    var data = [2, 5, 7, 3, 5];
    console.log(data.indexOf(5, "3")); // 4 (从3号位开始搜索)
    7.lastIndexOf
    lastIndexOf方法与indexOf方法类似:
    只是lastIndexOf是从字符串的末尾开始查找,而不是从开头。还有一个不同就是fromIndex的默认值是array.length - 1而不是0.
    var data = [2, 5, 7, 3, 5];
    console.log(data.lastIndexOf(5, 3)); // 1 (从后往前,索引值小于3的开始搜索)

     
  • 相关阅读:
    【Git】rebase 用法小结(转)
    修饰符访问权限。
    throws与throw关键字。
    多线程,同步代码块。
    多线程,设置线程的优先级。
    多线程,加入线程。
    多线程,守护线程。
    多线程,休眠线程。
    多线程,获取当前线程的对象。
    多线程获取名字和设置名字。
  • 原文地址:https://www.cnblogs.com/wwwxxjsyy/p/10905050.html
Copyright © 2011-2022 走看看