当前位置: 首页 > wzjs >正文

公司网站传图片网络架构模拟设计

公司网站传图片,网络架构模拟设计,贵州网站备案局,公司网址注册一般需要多少钱在编程中,处理一组数据(一个列表或集合)是最常见的任务之一。在很长一段时间里,for 循环是我们手中唯一的锤子。但当你手里只有锤子时,看什么都像钉子。 for 循环虽然强大,但它过于“过程化”,…

在编程中,处理一组数据(一个列表或集合)是最常见的任务之一。在很长一段时间里,for 循环是我们手中唯一的锤子。但当你手里只有锤子时,看什么都像钉子。

for 循环虽然强大,但它过于“过程化”,你需要手动管理索引、循环条件和每一步的操作,代码冗长且容易出错。

一、回忆杀:万能但繁琐的 for 循环

假设我们有一个用户列表,现在需要完成三个任务:

  1. 提取所有用户的名字。
  2. 筛选出所有成年用户。
  3. 计算所有用户的年龄总和。

【过去我们这么写 (ES5)】

var users = [{ id: 1, name: '张三', age: 16 },{ id: 2, name: '李四', age: 22 },{ id: 3, name: '王五', age: 30 }
];// 任务1: 提取名字
var names = [];
for (var i = 0; i < users.length; i++) {names.push(users[i].name);
}
// names: ['张三', '李四', '王五']// 任务2: 筛选成年人
var adults = [];
for (var i = 0; i < users.length; i++) {if (users[i].age >= 18) {adults.push(users[i]);}
}
// adults: [{...李四}, {...王五}]// 任务3: 计算年龄总和
var totalAge = 0;
for (var i = 0; i < users.length; i++) {totalAge += users[i].age;
}
// totalAge: 68

看到问题了吗?为了三个简单的任务,我们写了三个独立的 for 循环,代码重复且意图不明确。你必须读完整个循环体,才能理解它到底在“做什么”。

二、进化时刻:高阶函数登场

ES5 就已经为数组引入了一系列强大的“高阶函数”(如 map, filter, reduce),但它们真正的威力,是在与 ES6 的箭头函数结合后才彻底释放出来的。

什么是高阶函数? 简单说,就是一个可以接收函数作为参数,或者返回一个函数的函数。

【现在我们这么写 (ES6+)】

任务1: 提取名字 - 使用 map
map 方法会遍历数组的每个元素,并根据你提供的函数返回一个全新的、长度相同的新数组。它用于“映射”或“转换”。

const names = users.map(user => user.name);
// names: ['张三', '李四', '王五']

一行代码搞定!代码的意图非常清晰:“将 users 数组映射成一个只包含 name 的新数组”。

任务2: 筛选成年人 - 使用 filter
filter 方法同样会遍历每个元素,但它会根据你提供的返回布尔值的函数来决定是否保留该元素,最终返回一个全新的、长度可能更短的新数组。它用于“筛选”或“过滤”。

const adults = users.filter(user => user.age >= 18);
// adults: [{...李四}, {...王五}]

同样一行代码,意图明确:“将 users 数组中 age 大于等于 18 的元素过滤出来”。

任务3: 计算年龄总和 - 使用 reduce
reduce 方法是最高级、最灵活的一个。它像一个“累加器”,会遍历数组,将每个元素“缩减”为一个最终的单一值(可以是数字、字符串、对象等)。
reduce 接收两个参数:一个回调函数,一个初始值。
回调函数有四个参数:(accumulator, currentValue, currentIndex, array),我们最常用的是前两个:

  • accumulator (累加器): 上一次回调返回的值,或者是初始值。
  • currentValue (当前值): 数组中正在处理的元素。
const totalAge = users.reduce((sum, user) => sum + user.age, 0);
// totalAge: 68

代码解读:“将 users 数组缩减为一个值。从初始值 0 开始,将每个 userage 累加到 sum 上”。

三、链式调用的魔力

这些高阶函数最酷的地方在于它们都返回一个新数组,这意味着你可以将它们链式调用

需求:找到所有成年用户的名字,并用逗号连接成一个字符串。

【现在我们这么写 (ES6+)】

const adultNames = users.filter(user => user.age >= 18)  // 1. 先筛选出成年人.map(user => user.name)        // 2. 再提取他们的名字.join(', ');                   // 3. 最后用逗号连接// adultNames: "李四, 王五"

看到这种如流水线般清晰的链式调用了吗?这就是声明式编程的魅力。你不再告诉计算机“如何做”(how),而是告诉它你“想要什么”(what)。

四、其他常用高阶函数

  • forEach(callback): 只遍历,不返回。用于对每个元素执行某些操作(如打印)。
  • find(callback): 返回第一个满足条件的元素,找不到则返回 undefined
  • findIndex(callback): 返回第一个满足条件的元素的索引,找不到则返回 -1
  • some(callback): 判断是否存在至少一个元素满足条件,返回布尔值。
  • every(callback): 判断是否所有元素都满足条件,返回布尔值。

总结

  • 告别命令式的 for 循环,拥抱声明式的高阶函数。
  • map 用于 转换 数组。
  • filter 用于 筛选 数组。
  • reduce 用于 聚合/缩减 数组为一个值。
  • 链式调用这些方法,能写出极其优雅和可读的代码。

当你习惯了这种函数式编程的思维后,你会发现你的代码逻辑会变得前所未有的清晰。

在下一篇,我们将进入本系列最核心的环节——异步编程。我们将正式向“回调地狱”宣战,学习 Promise 如何拯救我们。敬请期待!


文章转载自:

http://BC7zjeGO.csnch.cn
http://50CjXGBv.csnch.cn
http://mKWlJ2qv.csnch.cn
http://hvqtgMo4.csnch.cn
http://3MkhTLCD.csnch.cn
http://RadvJ1na.csnch.cn
http://gREX0mpW.csnch.cn
http://Bb0om5uC.csnch.cn
http://kznn9wHo.csnch.cn
http://cn6AsBNk.csnch.cn
http://C8os0V8P.csnch.cn
http://R9Z7Ik2i.csnch.cn
http://UYeStJKG.csnch.cn
http://RoZlYzfb.csnch.cn
http://I5KetcbI.csnch.cn
http://VwpTBbjf.csnch.cn
http://ZxXNhNjy.csnch.cn
http://pMbcV81r.csnch.cn
http://aoCG9NWI.csnch.cn
http://ec704ZSb.csnch.cn
http://KTp2Bcuc.csnch.cn
http://qvMxzPiB.csnch.cn
http://TqkWyFxB.csnch.cn
http://oAM0ptk5.csnch.cn
http://w5JMgpCk.csnch.cn
http://CVnUSqnk.csnch.cn
http://XpyNoWS9.csnch.cn
http://wAX6xxCF.csnch.cn
http://by6jIn2q.csnch.cn
http://8xXi9xck.csnch.cn
http://www.dtcms.com/wzjs/778056.html

相关文章:

  • 东台建设局官方网站wordpress输入命令
  • 如何免费开个人网站快速开发app
  • 北京保障性住房建设投资中心网站湛江仿站定制模板建站
  • 本机做网站如何访问享设计网做兼职设计师怎么样
  • 宝安印刷网站建设wordpress 插件有后门
  • 广东旅游网站建设海南论坛论坛网站建设
  • 厦门响应式网站建设电商网站开发技术难点
  • qq代刷网站社区建设wordpress数据库导入插件
  • 做视频网站的方法玩具网站的制作
  • 关键词首页排名代做最近的seo网站优化排名
  • 网站开发 在线报名网站开发语言手册
  • 最流行的网站设计风格莱芜杂谈
  • 专题网站创意设计与实现十大经典手游网络游戏
  • 好的网站怎么设计师机械加工网站易下拉大测
  • 宜春做网站的马云不懂技术如何做网站
  • 做私人没有备案的网站百度推广售后
  • 首页重庆网站建设怎么制作灯笼
  • 网站建设策划书格式杭州比较好的互联网公司
  • 镇平县两学一做专题网站房屋装修报价
  • 更新备案 网站 打开企业管理说白了是干嘛的
  • 网站的排版微信公众号制作图文
  • 福州电子商务网站网站规划与维护
  • 什么网站是做电机控制的如何自己做加盟网站
  • 网站历史权重查询为某公司或企业做的门户网站
  • 响应式网站栅格延边网站开发depawo
  • phpnow搭建本地网站网站转出
  • 企业网站建设套餐上海wordpress修改文字大小
  • 有哪些企业网站平台北京手机网站建设公司
  • 荥阳市城乡建设规划网站南昌做网站费用
  • 杭州互联网网站定制公司wordpress 路径文件大小