数组(Array)的常用方法

104 阅读2分钟

数组的常用方法

迭代方法

  • map 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

    代码如下(示例):

    const map = (array, fn) => {
    	let results = [] 
    	for (const value of array) { 
    		results.push(fn(value)) 
    	}
    	return results
    }
    let numbers = [1, 2, 3, 4];
    let mapResult = map(numbers, (v) => v * v); 
    console.log(mapResult); // [1, 4, 9, 16]
    
  • every 对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。

    代码如下(示例):

    const every = (array, fn) => {
    	let result = true 
    	for (const value of array) { 
    		result = fn(value) 
    		if (!result) { 
    			break 
    		} 
    	}
    	return result
    }
    let numbers = [1, 2, 3, 4];
    let flag= every (numbers, (v) => v > 2); 
    console.log(flag); // false
    
  • some 对数组中的每一项运行给定函数,如果该函数对任一项都返回true,则返回true。

    代码如下(示例):

    const some = (array, fn) => { 
    	let result = false 
    	for (const value of array) { 
    		result = fn(value) 
    		if (result) { 
    			break 
    		} 
    	}
    	return result 
    } 
    let numbers = [1, 2, 3, 4];
    let flag= some (numbers, (v) => v > 2); 
    console.log(flag); // true
    

归并方法

  • reduce/reduceRight 接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。传入的函数接收4个参数:前一个值,当前值,项的索引和数组对象。

    代码如下(示例):

    let values = [1, 3, 5, 7, 9];
    let sum = values.reduce(function (x, y) {
        return x + y;
    }); 
    console.log(sum); // 25
    

重排序方法

  • sort 字符串根据ASCII码进行排序 Array的sort()方法默认把所有元素先转换为String再排序。

    代码如下(示例):

    let arr = [10, 20, 1, 2];
    arr.sort( (x, y)  => {
    	return x - y;  
    });
    console.log(arr); // [1, 2, 10, 20]
    

查找方法

  • find 用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined

    代码如下(示例):

    // 找到第一个符合条件的元素,返回该成员
    let arr = [-5, 4, 1, 2];
    let result = arr.find( (n) => n < 0);
    console.log(result ); // -5
    
    // 没有找到符合条件的元素,返回undefined
    let values= [3, 4, 1, 2];
    let num= values.find( (n) => n < 0);
    console.log(num); // undefined
    
  • findIndex 返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。 代码如下(示例):

    let values = [1, 5, 10, 15]
    let index = values.findIndex(function(value, index, arr) {
      return value > 9;
    }) 
    console.log(index) // 2