前端开发数组操作:实例分析find,some,filter,reduce应用以及区别 - Web前端
作者:98wpeu发布时间:2026-09-01分类:网页前端技术浏览:16
导读:上篇文章我们聊到过关于filter过滤器的使用,大家可以去看下这篇文章:前端开发数组过滤器:filter()的使用笔记今天我们继续学习下javascript中关于数组的应用方法:f...

上篇文章我们聊到过关于filter过滤器的使用,大家可以去看下这篇文章:
前端开发数组过滤器:filter()的使用笔记
今天我们继续学习下javascript中关于数组的应用方法:find,some,filter,reduce的区别和用法。
区分清楚Array中filter、find、some、reduce这几个方法的区别,根据它们的使用场景更好的应用在日常编码中。
array.find
Array.find 返回一个对象(第一个满足条件的对象)后停止遍历
const arrTest = [
{ id: 1, name: "a" },
{ id: 2, name: "b" },
{ id: 3, name: "b" },
{ id: 4, name: "c" }
]
// 过滤条件
function getName(val) {
return arrTest => arrTest.name === val
}
// 如果我们是想找到第一个满足条件的数据,应该使用`Array.find`
console.log(arrTest.find(getName("b")))
// { id: 2, name: "b" }Array.some
Array.some 返回是否满足条件的布尔值
const arrTest = [
{ id: 1, name: "a", status: "loading" },
{ id: 2, name: "b", status: "loading" },
{ id: 3, name: "b", status: "success" }
]
// 过滤条件
function getStatus(val) {
return arrTest => arrTest.status === val
}
// 如果我们需要查找一个数组中是否存在某个数据的时候,使用Array.some直接拿到结果
console.log(arrTest.some(getStatus("success")))
// trueArray.filter
Array.filter 遍历整个Array返回一个数组(包含所有满足条件的对象)
const arrTest = [
{ id: 1, name: "a", status: "loading" },
{ id: 2, name: "b", status: "loading" },
{ id: 3, name: "b", status: "success" }
]
// 过滤条件
function getStatus(val) {
return arrTest => arrTest.status === val
}
// 如果我们是需要过滤出一个数组中所有满足条件的数据,应该使用Array.filter
console.log(arrTest.filter(getStatus("loading")))
// [
// { id: 1, name: "a", status: "loading" },
// { id: 2, name: "b", status: "loading" }
// ]Array.reduce
Array.reduce 为数组的归并方法,使用场景很多,比如求和、求乘积,计次,去重,多维转一维,属性求和等...
本节示例主要实现Array.reduce对一组数据进行条件过滤后,返回一个新的数组。
const arrTest = [
{ id: 1, status: "loading" },
{ id: 2, status: "loading" },
{ id: 3, status: "success" }
]
console.log(
arrTest.reduce((acc, character) => {
return character.status === "loading"
? acc.concat(
Object.assign({}, character, { color: "info" })
)
: acc
}, [])
)
// [
// { id: 1, status: "loading", color: "info" },
// { id: 2, status: "loading", color: "info" }
// ]与Array.filter返回的数组的不同,filter返回的是原数组中符合条件的对象集合,filter与 Array.map 结合也可以实现上面的结果,为什么使用reduce更好呢?
// Array.map 和 Array.filter 组合
console.log(
arrTest
.filter(character => character.status === "loading")
.map(character =>
Object.assign({}, character, { color: "info" })
)
)
// [
// { id: 1, status: "loading", color: "info" },
// { id: 2, status: "loading", color: "info" }
// ]总结
同时使用 Array.filter 和 Array.map 的时候,对整个数组循环了 2 遍。第一次是过滤返回一个新的数组,第二次通过
map 又构造一个新的数组。使用了两个数组方法,每一个方法都有各自的回调函数,而且 filter 返回的数组以后再也不会用到。
使用 Array.reduce 同样的结果,代码更优雅。
相关推荐
- 让前端泪流满面的设计还原工具 - Web前端
- 微软在浏览器中直接提供其 VS Code 工具 - Web前端
- vue开发Tips:用具体实例去理解v-on指令的基本应用 - Web前端
- Windows 11 常见问题解答:我们的升级指南以及您需要了解的所有其他信息 - Web前端
- 正则表达式:JS正则RegExp对象 - Web前端
- 分析下原生JS里的hasOwnProperty的属性 - Web前端
- 退出中国?Yahoo停止中国产品及服务 - Web前端
- vue开发:聊聊自定义指令基础知识以及在具体项目的应用 - Web前端
- 微软正在添加另一种使用在线服务体验包更新 Windows 11 的方法 - Web前端
- Mozilla Firefox 加入实施全球隐私控制的浏览器 - Web前端
- 网页前端技术排行
-
- 1[Web前端]用javascript实现默认图片替代未显示的图片 - Web前端
- 2分析Iconfont-阿里巴巴矢量常用图标库 - Web前端
- 3jQuery实例教程:制作网页中可折叠的面板 - Web前端
- 4【第六章】Foundation之按钮和下拉功能 - Web前端
- 5基于jquery的滚动条滚动固定div(附演示下载) - Web前端
- 6jQuery编写widget的一些技巧分享 - Web前端
- 7分享精心挑选的12款优秀jQuery Ajax分页插件和教程 - Web前端
- 8在Mac/PC上远程调试iPhone/iPad上的网页 - Web前端
- 9jQuery实现鼠标移到元素上动态提示消息框效果 - Web前端
- 最近发表
-
- WordPress随机显示特色图片插件:Random Post Thumbnails
- KeePass实现Chrome浏览器自动填充密码方法一
- LNMP一键包nginx 301强制跳转到https教程
- KeePass实现Chrome浏览器自动填充密码方法二
- #建站# 免费的VPS管理软件Xshell8/Xftp8中文版下载
- 使用Xshell 8连接VPS教程_电脑登录vps的方法
- WordPress评论界面添加烟花????效果
- 不同浏览器书签同步方案:坚果云+Floccus_详细使用教程
- iOS端KeePassXC客户端APP:Strongbox Password Safe
- 给WordPress评论中的Gravatar头像图片添加ALT属性


