js 数组常用方法积累

js 数组常用方法积累

1.find()

返回数组中第一个通过测试的元素的值,找到,则 find() 返回该数组元素的值(并且不检查剩余值);否则返回 undefined.

var arr = [1,2,3,4,5,3]
let result = arr.find(item=>{
   return item > 3 
})
console.log(result);//4

2.findIndex()

返回数组中通过测试的第一个元素的索引,找到,则 findIndex() 返回该数组元素的索引(并且不检查剩余值);否则返回 -1

  var arr = [1,2,3,4,5,3]
  let result = arr.findIndex(item=>{
     return item > 3 
  })
  console.log(result);//3

3.push()

向数组末尾添加新项目,并返回新长度

 var arr = [1,2,3,4,5,3]
 arr.push(8)
 console.log(arr);//[1, 2, 3, 4, 5, 3, 8]

4.pop()

移除数组的最后一个元素,并返回该元素

 var arr = [1,2,3,4,5,3]
 let arr2 = arr.pop()
 console.log(arr2);//3
 console.log(arr);//[1, 2, 3, 4, 5]

5.shift()

法移除数组的第一项,返回值是被移除的项目

 var arr = [1,2,3,4,5,3]
 let arr2 = arr.shift()
 console.log(arr2);//1
 console.log(arr);//[2, 3, 4, 5, 3]

6.unshift()

将新项添加到数组的开头,并返回新的长度

 var arr = [1,2,3,4,5,3]
 let arr2 = arr.unshift(9)
 console.log(arr2);//7
 console.log(arr);//[9, 1, 2, 3, 4, 5, 3]

7.filter()

创建数组,其中填充了所有通过测试的数组元素(作为函数提供)[不会对没有值的数组元素执行该函数]

 var arr = [1,2,3,4,5,3]
 let arr2 = arr.filter(item=>{
    return item>3
 })
 console.log(arr2);// [4, 5]

8.map()

使用为每个数组元素 调用函数的结果 创建新数组

const arr = [1, 2, 3, 4, 5, 6];
const newArr = arr.map(function a(item, i, arr) {
  item *= 2;
  console.log(arr); //[1, 2, 3, 4, 5, 6]
  return item;
});
console.log(newArr); //[2,4,6,8,10,12]

9.forEach()

按顺序为数组中的每个元素调用一次函数。(方法执行是没有返回值的,对原来数组也没有影响。)

    const arr = [1, 2, 3, 4, 5, 6];
    const newArr = arr.forEach(function a(item, i, arr) {
      item *= 2;
      console.log(arr); //[1, 2, 3, 4, 5, 6]
      return item;
    });
    console.log(newArr); //undefined

    var arr2 = [1, 2, 3, 4, 5];
    var sum = 0;
    arr2.forEach(function (value, index, array) {
        console.log(array[index] == value); // true
        sum += value;
    });
    console.log(sum); // 15

10.indexOf() 与 lastIndexOf()

在数组中搜索指定项目,并返回其位置;搜索将从指定位置开始,如果未指定开始位置,则从头(末尾)开始,并在数组末尾结束搜索。
如果未找到该项目,则 返回 -1。
【indexOf】:如果该项目出现多次,则 indexOf() 方法返回第一次出现的位置
【lastIndexOf】:如果要搜索的项目不止一次出现,lastIndexOf() 方法将返回最后一次出现的位置

var list = ['lily','sara','kathy']
console.log(list.indexOf('kathy'));//2
//指定start参数:
list.indexOf(item,start) 

11.every()

检查数组中的所有元素是否都通过了测试(对数组中存在的每个元素执行一次函数)–不改变原数组

  • 如果找到函数返回 false 值的数组元素,every() 返回 false(并且不检查剩余值)
  • 如果没有出现 false,every() 返回 true
 var arr = [11,1,23,34,23,78]
 let flag = arr.every(item=>{
     return item > 11
 })
 console.log(flag);//false

12.some()

检查数组中的任何元素是否通过测试(对数组中存在的每个元素执行一次函数)–不改变原数组

  • 如果找到函数返回真值的数组元素,some() 返回真(并且不检查剩余值)
  • 否则返回 false
 var arr = [11,1,23,34,23,78]
 let flag = arr.some(item=>{
    return item > 11
 })
 console.log(flag);//true

13.join()

将数组作为字符串返回。元素将由指定的分隔符分隔。默认分隔符是逗号 (,)

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var energy = fruits.join();
console.log(energy);//Banana,Orange,Apple,Mango

14.concat()

用于连接两个或多个数组(不会更改现有数组,而是返回一个新数组,其中包含已连接数组的值)

var arr = [1,34,23,78]
var arr2 = [22,3,222]
var fruits = ["Banana", "Orange"];
console.log(arr.concat(arr2,fruits));//[1,34, 23, 78, 22, 3, 222, 'Banana', 'Orange']

15. Array.isArray()

定对象是否为数组。
如果对象是数组,则此函数返回 true,否则返回 false。

 var arr = [1,34,23,78]
 var str = '121212'
 console.log(Array.isArray(arr));//true
 console.log(Array.isArray(str));//false

16.reduce()

返回上次调用回调函数的累积结果
reduce方法为数组的每个值(从左到右)执行提供的函数
**
– 对没有值的数组元素,不执行 reduce() 方法
– reduce() 方法不会改变原始数组。

参数意义
prev上次调用函数的返回值 (必需)
cur当前元素 (必需)
index当前元素的索引值
arr被遍历的数组
initialValue初始值
  • 无初始值
let arr = [1, 2, 3, 4];
let sum = arr.reduce((prev, cur, index, arr) =>{
    return prev + cur;
})
console.log(arr, sum); // [1,2,3,4],10
  • 有初始值
let arr = [1, 2, 3, 4];
let sum = arr.reduce(function(prev, cur, index, arr) {
    console.log(prev, cur, index);
    return prev + cur;
},5)
console.log(arr, sum);// [1,2,3,4],15
  • 高级应用
    1.计算数组中每个元素出现的次数
let arr = ['name','age','long','short','long','name','name'] 
let arrResult = arr.reduce((pre,cur) =>{
    console.log(pre,cur)
    if(cur in pre){
        pre[cur]++
    }else{
        pre[cur] = 1
    }
    return pre
},{})
console.log(arrResult)//结果:{name: 3, age: 1, long: 2, short: 1}

2.去除数组中重复的元素

let arrResult = arr.reduce((pre,cur) =>{
    if(!pre.includes(cur)){
        pre.push(cur)
    }
    return pre;
},[])
console.log(arrResult)//结果:["name", "age", "long", "short"]

此方法借鉴— 详解数组中的reduce方法

17. sort( )

  • sort() 方法用于对数组的元素进行排序。排序顺序可以是字母或数字,并按升序或降序。默认排序顺序为按字母升序;(这种方法会改变原始数组!)

  • arrayObject.sort(sortby);参数sortby可选,规定排序顺序,必须是函数;
    [若没有参数,将按字符编码对数组中的元素进行排序]

  • sort() 方法比较两个值时,将值发送给比较函数,根据返回的(负、零、正)值对值进行排序。

  • 比较函数应该具有两个参数a和b,其返回值如下:
    若a<b,在排序后的数组中a应该出现在b之前,则返回一个小于0的值;
    若a=b,则返回0;
    若a>b,则返回一个大于0的值;

// 示例1
const fruits = ["Banana", "Orange", "Apple", "Mango"];
console.log(fruits.sort());//['Apple', 'Banana', 'Mango', 'Orange']
// 示例2 
var points = [40, 100, 1, 5, 25, 10];
console.log(points.sort(function(a, b){return a-b}));//[1, 5, 10, 25, 40, 100] - 升序
console.log(points.sort(function(a, b){return b-a}));//[100, 40, 25, 10, 5, 1] - 降序

18.flat( )和flatMap( )

  • flat(depth)
    数组扁平化,flat() 用于将嵌套的数组“拉平”,变成一维的数组
    该方法返回一个新数组,对原数据没有影响
    flat() 方法会移除数组中的空项:
    –depth 可选
    指定要提取嵌套数组的结构深度,默认值为 1【使用 Infinity,可展开任意深度的嵌套数组】
var arr2 = [1, 2, [3, 4, [5, 6]]];
console.log(arr2.flat());// [1, 2, 3, 4, [5, 6]]
var arr3 = [1, 2, [3, 4, [5, 6]]];
console.log(arr3.flat(2)); // [1, 2, 3, 4, 5, 6]
var arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
console.log(arr4.flat(Infinity)); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  1. flatMap( )
    flatMap() 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与 map 连着深度值为 1 的 flat 几乎相同,但 flatMap 通常在合并成一种方法的效率稍微高一些
    具体使用参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap

19.splice( )

通过删除替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组

语法:array.splice(index,howmany,item1,.....,itemX)
index :必需;规定从何处添加/删除元素
howmany:可选。规定应该删除多少元素。必须是数字,但可以是 “0”。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
item:可选。要添加到数组的新元素

  • 删除
/* 返回被删除的内容*/
console.log([1,2,3,4,5,6,7,8].splice(2,1)); //[3]
console.log([1,2,3,4,5,6,7,8].splice(2,0)); //[] 
console.log([1,2,3,4,5,6,7,8].splice(2)); //[3,4, 5, 6, 7, 8]   
  • 替换
var arr = ['a','b','c','d','e']
console.log(arr); // ['all', 'b', 'c', 'd', 'e']
  • 添加
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,0,"Lemon","Kiwi");
console.log(fruits);// ['Banana', 'Orange', 'Lemon', 'Kiwi', 'Apple', 'Mango']
  • 特殊情况
// 如果start(n)为负数,则等价于array.length-n   
var arr = ['a','b','c','d','e']
let res = arr.splice(-2)
console.log(arr);//['a', 'b', 'c']
console.log(res);//['d', 'e']

20.includes( )

用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。
语法:

  • arr.includes(searchElement)

  • arr.includes(searchElement, fromIndex)

    • fromIndex可选。从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索(如果计算出的索引小于 0,则整个数组都会被搜索)。默认为 0。
const arr = ['hello','hi','world','some']
console.log(arr.includes('hi'));//true
console.log(arr.includes('what'));//false
console.log(arr.includes('hi',2));//false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值