千家信息网

javascript数组includes、reduce如何使用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍了javascript数组includes、reduce如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript数组includes、r
千家信息网最后更新 2026年10月31日javascript数组includes、reduce如何使用

这篇文章主要介绍了javascript数组includes、reduce如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript数组includes、reduce如何使用文章都会有所收获,下面我们一起来看看吧。

Array.prototype.includes

ES7添加对此方法的支持,includes() 方法用来判断一个数组是否包含一个指定的值的元素,并返回布尔值true或false,如果包含则返回 true,否则返回 false。

语法

arr.includes(valueToFind[, fromIndex])

参数

  • valueToFind(必须):需要查找的元素值,比较字符串和字符时是区分大小写。

  • fromIndex(可选):从数组 fromIndex 索引处开始查找 valueToFind。

    • 负数 ,则按升序从 array.length + fromIndex 的索引开始搜 (即使从末尾开始往前跳 fromIndex 的绝对值个索引,然后往后搜寻)。

    • 默认值为 0。

返回值

包含则返回 true,否则返回 false。

实例

// ES5 Codeconst numbers = ["一", "二", "三", "四"];console.log(numbers.indexOf("一") > -1); // trueconsole.log(numbers.indexOf("六") > -1); // false// ES7 Codeconsole.log(numbers.includes("一")); // trueconsole.log(numbers.includes("六")); // falseconsole.log(numbers.includes("一",1)); // false,从数组索引为`1`往后找console.log(numbers.includes("一", -3)); // true,从 `array.length + fromIndex` 的索引开始完后找,跟上面从索引为1开始等效

使用 includes 方法可以使代码简短易懂。include 方法在比较值时也很方便,如下代码。

// 过去const day = "星期二";if (day === "星期二" || day === "星期三" || day === "星期四") {    console.log(day);}// 现在if (["星期二", "星期三", "星期四"].includes(day)) {    console.log(day);}

Array.prototype.reduce

reduce() 方法对数组中的每个元素执行reducer函数(升序执行),将其结果汇总为单个返回值。

语法

Array.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])

为数组中的每一个元素依次执行callback函数,不包括数组中被删除或从未被赋值的元素。

参数

  • callback(必须):执行数组中每个值 (如果没有提供 initialValue则第一个值除外)的reducer函数,包含四个参数

    • accumulator(必须):累计器累计回调的返回值; 它是上一次调用回调时返回的累积值,初始值可以通过initialValue定义,默认为数组的第一个元素值,累加器将保留上一个操作的值,就像静态变量一样

    • currentValue(必须):数组中正在处理的元素

    • index(可选):数组中正在处理的当前元素的索引。 如果提供了initialValue,则起始索引号为 0,否则从索引 1 起始。
      注意:如果没有提供 initialValue,reduce 会从索引 1 的地方开始执行 callback 方法,跳过第一个索引。如果提供 initialValue,从索引 0 开始。

    • array(可选):调用 reduce() 的数组

  • initialValue(可选):作为第一次调用 callback 函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。

返回值

函数累计处理的结果。

实例

const arrNumbers = [1, 2, 3, 4, 5];const reduceNumbers = (arrayNumbers, accumulatorInitVal = false) => {    const reduceCallback = (accumulator, currentVal, currentIndex) => {        console.log(`当前索引:${currentIndex}`);        return accumulator + currentVal;    };    return accumulatorInitVal        ? arrayNumbers.reduce(reduceCallback, accumulatorInitVal)        : arrayNumbers.reduce(reduceCallback);};console.log(reduceNumbers(arrNumbers)); // 15,累计器初始值为数组的第一个元素的值1console.log(reduceNumbers(arrNumbers, 10)); // 25,累计器初始值为10

console.log(当前索引:${currentIndex}),是为了更加直观的看到索引值。

第一次未定义初始值输出如下:

当前索引:1
当前索引:2
当前索引:3
当前索引:4

第二次定义了累计器初始值输出如下:

当前索引:0
当前索引:1
当前索引:2
当前索引:3
当前索引:4

接下来我们来看一个奇葩需求,出于某种原因,需要一个包含所有用户全名的新数组(他们的姓,加上他们的名字),但只有当他们是20多岁,并且他们的全名是3个字的时候才需要。不要问我们为什么需要这么奇葩的数据子集,产品经理问了,我们很乐意帮忙^_^

const users = [    {        firstName: "坚",        lastName: "孙",        age: 37,    },    {        firstName: "策",        lastName: "孙",        age: 21,    },    {        firstName: "葛亮",        lastName: "诸",        age: 28,    },    {        firstName: "备",        lastName: "刘",        age: 44,    },    {        firstName: "统",        lastName: "庞",        age: 22,    },    {        firstName: "维",        lastName: "姜",        age: 19,    },    {        firstName: "伯温",        lastName: "刘",        age: 22,    },];const getFullName = (user) => `${user.lastName}${user.firstName}`;const filterByAge = (user) => user.age >= 20 && user.age < 30;// 常规实现const getFilterResult = users    //  第一步筛选年龄20-30之间的用户    .filter((user) => filterByAge(user))    //  拼接全名    .map((user) => getFullName(user))    //  筛选    .filter((fullName) => fullName.length === 3);console.log(getFilterResult);   // [ '诸葛亮', '刘伯温' ]// 迭代方式实现const iterationsFilterResult = (arrayResult, currentUser) => {    const fullname = getFullName(currentUser);    if (filterByAge(currentUser) && fullname.length === 3) {        arrayResult.push(fullname);    }    return arrayResult;};console.log(users.reduce(iterationsFilterResult, []));  // [ '诸葛亮', '刘伯温' ]

关于"javascript数组includes、reduce如何使用"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"javascript数组includes、reduce如何使用"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

索引 数组 元素 星期 方法 函数 参数 全名 知识 伯温 处理 代码 内容 升序 奇葩 字符 实例 易懂 正在 第一次 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 厦门中拓互联网络科技有限公司 致骋互联网科技 南京欣网互联网科技 互联网科技上市公司 互联网金融 科技创新 佰商互联网科技有限公司 中国互联网金融科技基金 深圳卡尔迅互联网科技有限公司怎么样 互联网科技公司的市场部门 电子科技大学互联网创业大赛 民营互联网公司国防科技 互联网行业科技股 滨湖区互联网智能科技产品有哪些 合肥互联网科技公司公章图片 神州科技互联网有限公司 吉林省码上互联网科技电话 求路客互联网科技电话 悟空问答互联网科技 广州三三互联网科技有限公司 杭州科技互联网公司有哪些 互联网科技工作委员会 科技服务与互联网 深圳互联网络科技有限公司 互联网 视角下的科技创新 山东吉时兔互联网科技有限公司 未来五年的互联网科技 工业互联网山东科技大学 互联网金融科技元年 易企秀互联网科技是做什么的 每日互联网科技新闻
0