JS数组

1、filter():

语法:

var filteredArray = array.filter(callback[, thisObject]);
  • 参数说明:
    callback: 要对每个数组元素执行的回调函数。返回结果为true和 false
    thisObject : 在执行回调函数时定义的this对象。
//利用filter()和indexOf()对数组去重
    function choose_no_repeat_number(collection) {
        var result = collection.filter(haskey(element, index, self){
        return self.indexOf(element) == index;
    });
    return result;
}

indexOf只返回元素在数组中第一次出现的位置(也就是第一次出现的索引),如果与当前元素位置(索引)不一致,说明该元素在前面已经出现过,是重复元素

  • 功能说明:

对数组中的每个元素都执行一次指定的函数(callback),并且创建一个新的数组,该数组元素是所有回调函数执行时返回值为 true 的原数组元素。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略,同时,新创建的数组也不会包含这些元素。

回调函数可以有三个参数:当前元素,当前元素的索引和当前的数组对象。

如参数 thisObject 被传递进来,它将被当做回调函数(callback)内部的 this 对象,如果没有传递或者为null,那么将会使用全局对象。

filter 不会改变原有数组,记住:只有在回调函数执行前传入的数组元素才有效,在回调函数开始执行后才添加的元素将被忽略,而在回调函数开始执行到最后一个元素这一期间,数组元素被删除或者被更改的,将以回调函数访问到该元素的时间为准,被删除的元素将被忽略。

2、map()

对数组中的每个元素进行操作,返回的是每个元素操作后的值

//将所有的数组元素转换为大写:

var strings = ["hello", "Array", "WORLD"];
function makeUpperCase(v)
{
    return v.toUpperCase();
}
var uppers = strings.map(makeUpperCase);
// uppers is now ["HELLO", "ARRAY", "WORLD"]
// strings is unchanged
//结果:["hello", "Array", "WORLD"].map(makeUpperCase) : HELLO, ARRAY, WORLD 

3、some()

对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 true,如果发现这个元素,some 将返回 true,如果回调函数对每个元素执行后都返回 false ,some 将返回 false。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略。

some()是对整个数组的判断。比如检查是否有数组元素大于等于10,只有存在一个及以上就返回true。

4、every()

用法和map()相同,区别是every()是每个元素都要满足条件才能返回true,比如测试是否所有数组元素都大于等于10,返回结果要求每个元素都大于0才为true。

5、forEach()

仅遍历数组中的所有元素。

6、lastIndexOf():

语法

var index = array.lastIndexOf(searchElement[, fromIndex]);
  • 参数说明
    searchElement: 要搜索的元素
    fromIndex : 开始搜索的位置,默认为数组的长度(length),在这样的情况下,将搜索所有的数组元素。搜索是反方向进行的

  • 功能说明
    比较 searchElement 和数组的每个元素是否绝对一致(===),当有元素符合条件时,返回当前元素的索引。如果没有发现,就直接返回 -1 。

7、indexOf()

功能与lastIndexOf()一样,搜索是正向进行的

8、reduce()

回调函数的语法如下所示

    function callbackfn(previousValue, currentValue, currentIndex, array1)

可使用最多四个参数来声明回调函数。

回调参数 | 定义

  • previousValue
    通过上一次调用回调函数获得的值。如果向 reduce 方法提供 initialValue,则在首次调用函数时,previousValue 为 initialValue。

  • currentValue
    当前数组元素的值。

  • currentIndex
    当前数组元素的数字索引。

  • array1
    包含该元素的数组对象。

返回值

通过最后一次调用回调函数获得的累积结果。
reduce()只返回最后的一个值。

一般来讲prev是从数组中第一个元素开始的,next是第二个元素。但是当你传入初始值(initialValue)后,第一个prev将是initivalValue,next将是数组中的第一个元素。

  • 备注
    回调函数的返回值在下一次调用回调函数时作为 previousValue参数提供,最后一次调用回调函数获得的返回值为 reduce 方法的返回值。

你可能感兴趣的:(JS数组)