JavaScript常用数组对象方法总结

pop

数组尾部删除

js 复制代码
    const fruits = ['西瓜','葡萄','哈密瓜','芒果','香蕉']
    fruits.pop()
    console.log(fruits);

push

数组尾部添加

js 复制代码
    const fruits = ['西瓜','葡萄','哈密瓜','芒果','香蕉']
    fruits.push('榴莲')
    console.log(fruits);

unshift

数组头部添加

js 复制代码
    const fruits = ['西瓜','葡萄','哈密瓜','芒果','香蕉']
     fruits.unshift('樱桃')
    console.log(fruits);

shift

数组头部删除

js 复制代码
    const fruits = ['西瓜','葡萄','哈密瓜','芒果','香蕉']
     fruits.shift()
    console.log(fruits);

forEach

语法:forEach(item,index)

参数一: 当前循环的元素

参数二: 当前循环的索引

forEach() 方法对数组的每个元素执行一次提供的函数(回调函数)

  1. 函数没有返回值,即 underfined
  2. 不对原数组产生影响。
js 复制代码
    const str = ['rongxing', 'aniu', 'zhangsan', 'lisi']
    str.forEach((item, index) => {
      console.log(item); //rongxing,aniu,zhangsan,lisi
      console.log(index); //0,1,2,3
    })

sort

排序

正序排列

js 复制代码
    const num = [15, 51, 53, 45, 24, 13]
    const sortNum = num.sort((a, b) => {
      return a - b
    })
    console.log(sortNum);

倒序排列

js 复制代码
    const sortNum = num.sort((a, b) => {
      return a - b
    })
    console.log(sortNum);

splice

删除数组任意位置元素

splice(删除元素对应位置的索引,删除的个数[不填默认从头部开始删除],新增的元素)

返回值:删除的元素数组

js 复制代码
    const fruits = ['西瓜','葡萄','哈密瓜','芒果','香蕉']
     fruits.splice(2,1)
    console.log(fruits);//['西瓜','哈密瓜','芒果','香蕉']

map

map(回调函数(item,index) { })

  1. map 的返回值是一个新数组
  2. 新数组中的元素, 由回调函数的返回值决定, 返回的元素就会加入到新数组中
js 复制代码
 const arr = ['red', 'blue', 'green', 'purple']
      const arr = ['red', 'blue', 'green', 'purple']
     let result = arr.map((item)=> {
      return item + '颜色'
     })
     console.log(result);//['red颜色', 'blue颜色', 'green颜色', 'purple颜色']
 

join

join() 方法将数组中的所有元素连接成一个字符串

join(' ')分隔符手动指定,若不需要则留空

1.把数组转换为字符串

2.默认以 , 作为分隔符拼接成字符串

filter

  1. 返回一个新数组, 里面存储着所有符合条件的元素

  2. 特点同 map / forEach, 都会遍历数组中每一个元素

  3. 传入的回调函数中, 返回值(布尔值)表示当前遍历的元素是否符合条件

    其实这个方法就是一个过滤方法,前面那个 every 方法,只判断不过滤,filter 会过滤掉一些不符合条件的,并返回新数组。

    1. 返回一个满足过滤条件的新数组;
    2. 不会改变原数组。
js 复制代码
 const arr = [10, 20, 30, 40]
     const newArr = arr.filter(function(item) {
      return item > 20
    })
    console.log(newArr)//[30,40]

every

检测元素是否满足条件, 返回布尔型.所有数组元素都满足条件则返回 true, 只要有一个不满足条件就返回 false

arr.every(callback) 会对每一个元素都执行 callback 方法,直到 callback 返回 false。有时候 every 方法会和 forEach 方法相比较,因为 forEach 无法停止,而 every 方法返回 flase 时可以中途停止。

  1. 若全部通过测试,函数返回值 true,中途退出,返回 false;
  2. 不对原数组产生影响。
js 复制代码
     const arr = [10, 20, 30]

const result = arr.every((item, index) => {
//只要找到不满足条件的元素, 立马就会停止
  return item < 5
 })
 console.log(result) //false

some

只要有 1 个数组元素满足条件则返回 true, 都不满足则返回 false

js 复制代码
       const arr = [10, 20, 30]
    const result = arr.some((item, index) => {
      // 只要找到满足条件的元素了, 立马就会停止
      return item > 15
    })
    console.log(result) //true

find

find 查找满足条件的元素, 返回第一个满足条件的元素, 找不到则返回undefined

js 复制代码
    const goods = [
      {
        name: '小米',
        price: 1999
      },
      {
        name: '华为',
        price: 4999
      },
      {
        name: '苹果',
        price: 9999
      },
      {
        name: '苹果',
        price: 8888
      },
      {
        name: '黄瓜',
        price: 8888
      },
      {
        name: '雪梨',
        price: 8888
      }
    ]
    
        const result = goods.find(item => item.name === '苹果')

    console.log(result) //{name: '苹果', price: 9999}

findIndex

findIndex 查找满足条件的元素的索引号, 找不到则返回-1

该方法用法和 find 完全一样, 区别是 find 返回元素, 而 findIndex 返回索引

js 复制代码
       const goods = [
      {
        name: '小米',
        price: 1999
      },
      {
        name: '华为',
        price: 4999
      },
      {
        name: '苹果',
        price: 9999
      },
      {
        name: '苹果',
        price: 8888
      },
      {
        name: '黄瓜',
        price: 8888
      },
      {
        name: '雪梨',
        price: 8888
      }
    ] 
    const result2 = goods.findIndex((item) => item.name === '黄瓜')
    console.log(result2)//4

concat

数组合并

concat 方法将创建一个新数组,然后将调用它的对象(this 指向的对象,即原数组)中的元素以及所有参数中的数组类型的参数中的元素以及非数组类型的参数本身按照顺序放入这个新数组,并返回该数组。concat 方法并不修改原数组和参数数组,而且对非数组对象同样有效果。

  1. 返回拼接的新数组;
  2. 不修改原数组和参数数组;
  3. 参数可以是非数组。
js 复制代码
arr1 = [10,2,30,54,12]
arr2 = [14,26,30,57,82]
arr3 = arr2.concat(arr1)
console.log(arr3); //[14,26,30,57,82,10,2,30,54,12]

fill

填充数组

fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。返回修改后的原始数组,不创建新数组。

使用语法:fill( value ,start ,end),其中 :

value 用来填充数组元素的值,必填。

start 可选起始索引,默认值为0。

end 可选终止索引,默认值为 this.length

js 复制代码
// 当传入单个参数的时候,该方法会用该参数的值填充整个数组
    var arr1 = new Array(5)
    console.log(arr1.fill(1)); //[1,1,1,1,1]
    var arr2 = [1, 2, 3, 4]
    console.log(arr2.fill(0)); //[0,0,0,0]

    // 当传入两个参数的时候,第一个参数为填充的元素,第二个为填充元素的起始位置
    var arr3 = [0, 1, 2, 3, 4, 5, 6]
    console.log(arr3.fill(1, 3)); //[0,1,2,1,1,1,1]

    // 当传入三个参数的时候,第一个参数为填充的元素,第二个参数和第三个参数分别指填充元素的起始和终止位置,不修改终止位置元素
    var arr4 = [0, 1, 2, 3, 4, 5]
    console.log(arr4.fill(1, 3, 5)); //[0,1,2,1,1,5]
    
    //如果提供的起始位置或结束位置为负数,则他们会被加上数组的长度来算出最终的位置,例如 起始位置为-1 就相当于array.length-1
    var arr5 = [0, 1, 2, 3, 4, 5]
    console.log(arr5.fill(1, -3));//[0,1,2,1,1,1]
    var arr6 = [0, 1, 2, 3, 4, 5]
    console.log(arr6.fill(1, 3, -2));//[0,1,2,1,4,5]

reverse

数组翻转

这样同样也可以实现数组的倒序排列

js 复制代码
    const num = [1,2,3,4,5]
    const arr = num.reverse()
    console.log(arr); //[5, 4, 3, 2, 1]

reduce

数组求和

reduce 是一个合并的过程,从左到右,直到把所有元素合并到一起,并返回最终的结果。它接受两个参数,第一个参数是一个回掉函数,第二个参数是一个初始值,表示处理第一个元素时的前一个值。这个回掉函数接受四个参数,依次是 accumulator(上次处理的结果),currentValue(当前元素的值),index(当前元素索引),array(调用 reduce 的数组)。

js 复制代码
   const arr = [1, 2, 3, 6]
const sum = arr.reduce((prev, item) => {
      // 回调函数的参数:
      // 1. 上一次的结果, 第一次拿到的是初始值
      // 2. 当前遍历的元素
      // 回调函数的返回值, 作为下一次循环的第一个参数 (结果)
      // console.log(prev, item)
      return prev + item
    }, 0)
    console.log(sum)

Array.from

转换为真数组

js 复制代码
<body>
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <script>
    // 转换为真数组
    // 1. 得到伪数组
    const divs = document.querySelectorAll('div')
    console.log(divs)//伪数组

    // 2. 转换为真数组 Array.from() 返回真数组, 不会影响原来的伪数组
    // 传入一个伪数组, 返回一个真数组
    const result = Array.from(divs)
    result.find(item => {
      item.tagName === 'DIV'
    })
    console.log(result); //真数组
  </script>

slice

slice() 方法会浅复制(shallow copy)数组的一部分到一个新的数组,并返回这个新数组。

slice 的参数包括拷贝的初识位置,结束位置(左闭右开),与 splice 有区别。由于不会改变原数组,这个数组可以用于前拷贝,比如经常看别人使用:arr.slice(0),表示拷贝数组。

  1. 返回浅拷贝后的新数组;
  2. 不会改变原数组。
js 复制代码
let a1 = [1, 2, 3, 4, 5];
let a2 = a1.slice(1, 3);
a1 //[1, 2, 3, 4, 5]
a2 //[2, 3]

assign

Object.assign(target, sources)

  • target:目标对象,即要将属性复制到的对象。
  • sources:一个或多个源对象,即要从中复制属性的对象。可以传递多个源对象,按顺序依次复制属性到目标对象中。

返回目标对象,也就是复制属性后的目标对象

如果多个源对象具有相同的属性名,后面的属性会覆盖前面的属性。这意味着在复制过程中,如果有冲突的属性名,后面的源对象的属性值会覆盖之前的源对象属性值。

js 复制代码
// 源对象
const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const obj3 = { c: 5, d: 6 };

// 目标对象
const target = {};

// 将属性从源对象复制到目标对象
Object.assign(target, obj1, obj2, obj3);

console.log(target); // 输出:{ a: 1, b: 3, c: 5, d: 6 }

字符串方法

split

字符串拆分成数组

将字符串翻转过来,字符串不支持reverse()方法,只能支持数组的翻转,如果想要实现字符串的翻转则需要使用一些小手段,把字符串拆分成数组

js 复制代码
const str = '键盘敲烂 月薪过万'
const result = str.split('').reverse().join('')
console.log(result); //万过薪月 烂敲盘键

trim

去除字符串首尾空格

js 复制代码
    const str = ' 蓝翔高级技工学校 '
   const result = str.trim()
    console.log(result); //蓝翔高级技工学校
    // 一般用于去除注册时用户不小心输入的空格

startsWith

检测是否以某个字符开头, 返回布尔值

startsWith(检测字符, [检测位置])

js 复制代码
 console.log(str.startsWith('键')) // true

   console.log(str.startsWith('键盘')) // true

  console.log(str.startsWith('键盘鼠标')) // false

   console.log(str.startsWith('月薪', 4)) // true

endsWith

endsWith(检测字符, [字符串长度])

检测是否以某个字符结尾, 返回布尔值

js 复制代码
     console.log(str.endsWith('万')) // true
    console.log(str.endsWith('过万')) // true
     console.log(str.endsWith('奥利给')) // false
    console.log(str.endsWith('过万', 6)) // true

includes

includes(搜索的字符, [检测位置])

includes() 方法用来判断当前数组是否包含某指定的值,如果是,则返回 true,否则返回 false。

该函数接受两个参数,第二个参数表示开始查找位置,起始位置为 0。这个方法与 indexOf 方法最大的区别不仅在于返回值一个是索引,一个是布尔值,indexOf 方法使用的是 === 来判断,无法判断 NaN 情况,而 includes 可以判断。

  1. 返回 true 或 false;
  2. 不会改变原数组。
js 复制代码
    const str1 = "To be, or not to be, that is the question."
    console.log(str1.includes('not to be'))//true
    console.log(str1.includes('not'))//true
    console.log(str1.includes('n'))//true
    console.log(str1.includes('NOT'))//false

keys

数组的 keys() 方法返回一个数组索引的迭代器。

这个方法会返回一个数组索引的迭代器,迭代器在 ES6 中有特殊的用途。

  1. 函数返回一个迭代器对象;
  2. 不会改变原数组。
js 复制代码
let user = {
  name: "John",
  age: 30
};
js 复制代码
Object.keys(user) = ["name", "age"]

values

返回一个包含该对象所有的值的数组。

js 复制代码
Object.values(user) = ["John", 30]

entries

返回一个包含该对象所有 [key, value] 键值对的数组。

js 复制代码
Object.entries(user) = [ ["name","John"], ["age",30] ]
相关推荐
懒大王爱吃狼39 分钟前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
待磨的钝刨2 小时前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
逐·風5 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#
Devil枫5 小时前
Vue 3 单元测试与E2E测试
前端·vue.js·单元测试
尚梦6 小时前
uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)
前端·小程序·uni-app
GIS程序媛—椰子6 小时前
【Vue 全家桶】6、vue-router 路由(更新中)
前端·vue.js
前端青山7 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
毕业设计制作和分享7 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue
前端·数据库·vue.js·oracle·mybatis
从兄8 小时前
vue 使用docx-preview 预览替换文档内的特定变量
javascript·vue.js·ecmascript
清灵xmf9 小时前
在 Vue 中实现与优化轮询技术
前端·javascript·vue·轮询