数组api整理

251 阅读5分钟

本篇文章主要记录一下数组的api,对于一名合格的前端工作者,在mdn上面去查一些api的使用方法,想必是极好的,而像 axios echarts git weebpack vue react 这样一些工作中常用的框架,库,辅助的工具等。在官网上去学习,查找相对较好。

[ 参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array ](url)

Array

JavaScript 的 Array 对象是用于构造数组的全局对象,数组是类似于列表的高阶对象。

描述

数组是一种类列表对象,它的原型中提供了遍历和修改元素的相关操作。JavaScript 数组的长度和元素类型都是非固定的。因为数组的长度可随时改变,并且其数据在内存中也可以不连续,所以 JavaScript 数组不一定是密集型的,这取决于它的使用方式。

1 连接 arr.join()

    join通常用于将数组的元素拼接成一个字符串,返回一个字符串
    
let arr = ['我','爱','中','国']
  // arr.join('连接符')
  let string =  arr.join('')
  console.log(string);  // 我爱中国

2 reverse() 将数组中各元素颠倒顺序

 let arr = ['我','爱','中','国']
  console.log(arr.reverse());   //['国', '中', '爱', '我']

3 pop() 删除数组中最后一个元素,返回删除的那个值,并将长度减 1。

  let arr = [1,354,56,7,88,42,7,8,5,43]
  console.log(arr.length)  // 10
   console.log(arr.pop())  //43
  console.log(arr.length) // 9

4 shift() 删除数组中第一个元素,返回删除的那个值,并将长度减 1。

let arr = [1,354,56,7,88,42,7,8,5,43]
  console.log(arr.length)  // 10
   console.log(arr.shift())  //1
  console.log(arr.length) // 9

5 unshift() 往数组前面添加一个或多个数组元素,长度要改变

let arr = [1,354,56,7,88,42,7,8,5,43]
  console.log(arr.length)  // 10
   console.log(arr.unshift(100))  //11 
  console.log(arr) // [100, 1, 354, 56, 7, 88, 42, 7, 8, 5, 43]

6 push() 往数组结尾添加一个或多个数组元素,长度要改变

 let arr = [1,354,56,7,88,42,7,8,5,43]
  console.log(arr.length)  // 10
   console.log(arr.push(100))  //11 
  console.log(arr) //[1, 354, 56, 7, 88, 42, 7, 8, 5, 43, 100]

7 splice( ) 插入、删除或替换数组的元素

 let arr = [1,354,56,7,88,42,7,8,5,43]
  console.log(arr.length)  // 10
  // 两个参数 第一个参数用于要删除的起始的位置,第二个表示要删除的个数
  let newArr = arr.splice(0,2)  
  console.log(arr) // [56, 7, 88, 42, 7, 8, 5, 43]

  let arr1 = [1,354,56,7,88,42,7,8,5,43]
    // 三个参数 第一个参数用于要删除的起始的位置,第二个表示要删除的个数,第三个参数用于替换的元素
  let newArr1 = arr1.splice(0,3,99)
   console.log(arr1)   // [99, 7, 88, 42, 7, 8, 5, 43]

8 concat( ) 连接数组

书写格式:arr.concat(),括号里面写内容 (“字符串要加引号”),
    
 let arr = [42,7,8,5,43]
  let arr1 = [1,354,56,]
  let arr2 = arr.concat(arr1)
  console.log(arr2);  //[42, 7, 8, 5, 43, 1, 354, 56]

9 sort( ) 对数组元素进行排序

    // 字符串
  let arr = ['a','c','b','z','g']
  // 默认排序顺序是在将元素转换为字符串,然后比较它们的 UTF-16 代码单元值序列时构建的
  let newArr1 = arr.sort()
  console.log(newArr1)  //['a', 'b', 'c', 'g', 'z']
    // 数字类型
  let arr1 = [42,8,5,43]
  // 对数字类型,需要借助函数 传两个参数 return的值 a-b 则会从小到大对数组进行排序
  // return的值 b-a 则会从大到小对数组进行排序
 let newArr = arr1.sort( function(a,b){
        return a-b
 })
  console.log(newArr) //[5, 8, 42, 43]
  let newArr2 = arr1.sort( function(a,b){
        return b-a
 })
 console.log(newArr2) //[43, 42, 8, 5]

10 slice( ) 返回数组的一部分

slice():返回从原数组中指定开始下标到结束下标之间的项组成的新数组。
slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。
在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。
如果有两个参数,该方法返回起始和结束位置之间的项——但不包括结束位置的项。
    
 let arr = [12,1,3,34,123,565,23]
  // 只设置了一个参数,也就是起始下标为1,所以返回的数组为下标1(包括下标1)开始到数组最后
  let newArr = arr.slice(1)
  console.log(newArr)  //  [1, 3, 34, 123, 565, 23]

  // 设置了两个参数,返回起始下标(包括2)开始到终止下标(不包括6)的子数组。
  let newArr1 = arr.slice(2,6)
  console.log(newArr1); //[3, 34, 123, 565]

11 forEach 遍历所有元素

 let arr = [1, 2, 3];
// 遍历数组的所有元素
arr.forEach((index,item)=>{
  console.log(index,item) 
})

12 every 判断所有元素是否都符合条件

let arr = [1, 2, 3,4,5];
 let arr1 = arr.every((index,item)=>{
    if(item  < 6 )
     return true
})
console.log(arr1) // true

13 map 指“映射”,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

 let arr = [1, 2, 3, 4, 5]
let arr2 = arr.map(item =>{
return item*2
})
console.log(arr2) // [2, 4, 6, 8, 10]

14 filter 过滤符合条件的元素

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

15 some():判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。

let arr = [1, 2, 3, 4, 5];
let arr2 = arr.some(item=> {
return item < 3;
});
console.log(arr2); // true
var arr3 = arr.some(obj=> {
return obj < 1;
});
console.log(arr3); // false

16 findIndex方法,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1

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

let arr2 =  arr.findIndex(value=> {
  return value <1 ;
}) 
console.log(arr2); // -1

17 Array.Includes 用于判断数组中是否有此元素

let arr = [1, 5, 10, 15]
//arr.includes(2)  参数为2 判断数组中是否有2这个元素 有返回true 没有返回false
let arr1 = arr.includes(2)
console.log(arr1) //false
//arr.includes(5)  参数为5 判断数组中是否有5这个元素 有返回true 没有返回false
let arr2 = arr.includes(5)
console.log(arr2) // true

18 Array.reduce()接受两个参数:一个是对数组每个元素执行的回调方法,一个是初始值。

let arr = [1, 5, 10, 15,6]
//初始值3
let arr1 = arr.reduce((item,sum)=>{
    return sum +=item
},3)
console.log(arr1); //40

19 Array.from方法用于将伪数组转为真正的数组

 // Array.from()把对象转化为数组必须符合2个条件
  // 1 键必须是数值
  //  2 必须带有length的键值对(没有length时显示空对象)
let obj = { 
            '0': 3, 
            '1': 8, 
            '2': 9, 
            '3': 6,
            'length':4 
          }
 let arr = Array.from(obj)
	    console.log(arr); // [3, 8, 9, 6]

20 数组去重indexOf、Set、include

let arr = [1,3,5,76,34,87,23,7,34,7]
 // indexOf去重
 let newList = [];
for (let i = 0; i < arr.length; i++) {
  if (newList.indexOf(arr[i]) === -1) {
    newList.push(arr[i])
  }
}
console.log(newList) // [1, 3, 5, 76, 34, 87, 23, 7]

//Set()去重
let setList = new Set(arr);
let newList1 = [...setList]
console.log(newList1) // [1, 3, 5, 76, 34, 87, 23, 7]

// include()去重
let newList2 = [];
for (let i = 0; i < arr.length; i++) {
  if (!newList2.includes(arr[i])) {
    newList2.push(arr[i])
  }
}
console.log(newList2)  // [1, 3, 5, 76, 34, 87, 23, 7]