跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScript大前端

ES6 新特性与常用数组方法详解

ES6 引入 let 和 const 关键字,解决变量提升和重复声明问题,支持块级作用域。ES5 数组方法包括 forEach 遍历、map 映射、filter 过滤、some 存在判断及 every 全量判断。let 声明的变量无变量提升且不可重复声明,适合循环计数器。掌握这些基础语法有助于编写更规范的 JavaScript 代码。

GRACE Grace发布于 2019/6/28更新于 2026/6/1022 浏览
ES6 新特性与常用数组方法详解

ES6 新特性与数组方法

ES5 数组新方法

forEach

forEach 方法对数组的每个元素执行一次提供的函数。功能等同于 for 循环。

应用场景:为一些相同的元素,绑定事件处理器!

var arr = ['张飞', '关羽', '赵云', '马超']
// 第一个参数:item,数组的每一项元素
// 第二个参数:index,数组的下标
// 第三个参数:array,正在遍历的数组
arr.forEach(function(item, index, array) {
  console.log(item, index, array)
})
// 箭头函数写法
arr.forEach((item, index, array) => {
  console.log(item, index, array)
})

map

map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。返回的数组的长度和原数组是一样的。

var arr = [1, 2, 3, 4, 5]
// 返回值:一个新数组,每个元素都是回调函数的结果
var newArray = arr.map(function(element, index, array) {
  return element * element
})
console.log(newArray) // [1, 4, 9, 16, 25]
// 箭头函数写法
var newArray = arr.map(element => element * element)

filter

filter 用于过滤掉'不合格'的元素。返回一个新数组,如果在回调函数中返回 true,那么就留下来,如果返回 false,就扔掉,因此返回的数组的长度和原数组的长度不一定一致。

var arr = [1000, 5000, 20000, 3000, 10000, 800, 1500]
var newArray = arr.filter(function(element, index, array) {
  if (element > 5000) {
    return false
  } else {
    return true
  }
})
console.log(newArray) // [1000, 5000, 3000, 800, 1500]
// 箭头函数写法
var newArray = arr.filter(element => element > 5000)

some

some 用于遍历数组,如果有至少一个满足条件,就返回 true,否则返回 false。同样的每一个元素都会执行一遍 function,相当于最后返回的结果进行了一个 || 运算,全为 false 才是 false。

var arr = [2, 4, 6, 8, 10, 21]
// 判断数组是否包含奇数
var flag = arr.some(function(element, index, array) {
  if (element % 2 == 1) {
    return true
  } else {
    return false
  }
})
console.log(flag) // true
// 箭头函数写法
var flag = arr.some(element => element % 2 == 1)

every

every 用于遍历数组,只有当所有的元素返回 true,才返回 true,否则返回 false,每个元素执行完 function 返回的结果做一个 && 运算,全为 true 结果才是 true。

var arr = [2, 4, 6, 8, 10, 21]
// 判断数组是否都是偶数
var flag = arr.every(function(element, index, array) {
  if (element % 2 == 0) {
    return true
  } else {
    return false
  }
})
console.log(flag) // false
// 箭头函数写法
var flag = arr.every(element => element % 2 == 0)

方法对比总结

方法作用返回值
forEach只会让每个元素执行一次函数undefined
map返回一个新的数组,长度和原数组一样新数组
filter得到一个新数组,保留哪些满足条件(返回 true)新数组
some得到布尔值,只要有函数返回 true,整体结果就是 trueboolean
every得到布尔值,要所有的函数都返回 true,结果就是 trueboolean

ES6 变量声明

ES6 中提供了两个声明变量的关键字:const 和 let。

注意: 在 ES5 中 var 声明的全局变量都是顶级对象(window)的属性,而 ES6 中声明的全局变量不属于顶级对象的属性。

var age = 18
console.log(this.age) // 18
let age = 18
console.log(this.age) // undefined

let 使用

ES6 新增了 let 命令,用来声明变量。它的用法类似于 var。

  • let 声明的变量只有在当前作用域有效
  • 不存在变量提升
  • 不允许重复声明
  • 块级作用域
{
  let a = 10
  var b = 1
}
a // ReferenceError: a is not defined
b // 1

// let 的情况
console.log(bar) // 报错 ReferenceError
let bar = 2
let a = 10
let a = 1 // 报错 Identifier 'a' has already been declared

for 循环的计数器,就很合适使用 let 命令。

for (let i = 0; i < 10; i++) {
  // ...
}
console.log(i) // ReferenceError: i is not defined

上面代码中,计数器 i 只在 for 循环体内有效,在循环体外引用就会报错。

下面的代码如果使用 var,最后输出的是 10。

var a = []
for (var i = 0; i < 10; i++) {
  a[i] = function() {
    console.log(i)
  }
}
a[6]() // 10
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Llama 3.1 开源模型快速部署指南
  • Linux 多线程:深入互斥与同步机制
  • 基于腾讯云轻量应用服务器部署 OpenClaw 并接入 QQ 与飞书机器人
  • 使用 Trae 工具安装与配置 Claude Code 实战
  • C++ unordered_set/map 底层封装与模拟实现
  • 英伟达开源 DreamDojo:4.4 万小时数据破解机器人数据鸿沟
  • GitHub 个人访问令牌(PAT)配置与 Workflow 权限问题解决
  • 营销团队 AIGC 内容流水线搭建实录:Meixiong Niannian 引擎实践
  • 大厂 Android 开发面试真题与核心知识点汇总
  • 开源多情感 TTS 结合 WebUI 低成本构建企业客服系统
  • MySQL 事务隔离级别与一致性详解
  • 深入解析 WebView 的概念、功能、应用场景与优劣势
  • 小米智能家居集成升级与配置指南:解决连接问题实战方案
  • 寻找数组中心下标与除自身以外数组的乘积 - 前缀和技巧
  • 基于 AI 生成 Windows 18-HD19 风格 CSS 组件库实战
  • 基于 Docker 部署 Nginx 并通过内网穿透实现远程访问
  • TinyWebServer 源码解析:HTTP 机制与高性能设计
  • Linux 库制作与原理:从生成使用到 ELF 文件与链接解析
  • OpenClaw + Ollama 双系统部署教程(Windows/Linux)
  • 基于 AIGC 的汽车定速巡航 PID 参数调优可视化实践

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

目录

  1. ES6 新特性与数组方法
  2. ES5 数组新方法
  3. forEach
  4. map
  5. filter
  6. some
  7. every
  8. 方法对比总结
  9. ES6 变量声明
  10. let 使用
  • 💰 8折买阿里云服务器限时8折了解详情