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

javascript中数组的常见的简便写法,javascript中map, filter, forEach, reduce 等方法组合使用

目录

  • 一、单独使用
    • 1、map
    • 2、filter
    • 3、forEach
    • 4、reduce
  • 二、组合使用
    • 1.使用 map 和 filter
    • 2.使用 map 和 forEach
    • 3.使用 map 和 reduce
    • 4.使用 forEach 和 filter
    • 5.使用 map、filter 和 reduce
    • 6.使用 map 和 filter
    • 7.使用some 和every
    • 8.使用reduce 与 Object.assign
  • 三、利用map返回值实现的简便写法
    • 1. map 与 parseInt
    • 2. map 与 parseFloat
    • 3. map 与 Number
    • 4. map 与 String

一、单独使用

1、map

功能:对数组中的每个元素执行指定的映射操作,返回一个新的数组。

const numbers = [1, 2, 3];
const squares = numbers.map(num => num * num); // [1, 4, 9]

2、filter

功能:过滤数组中的元素,返回符合条件的新数组。

const phones = [
  { name: "PhoneA", price: 500 },
  { name: "PhoneB", price: 1000 },
  { name: "PhoneC", price: 300 }
];
const expensivePhones = phones.filter(phone => phone.price > 500); // [{ name: "PhoneB", price: 1000 }]

3、forEach

功能:对数组中的每个元素执行指定操作,不返回新数组,适用于简单的遍历。

const users = ["Alice", "Bob", "Charlie"];
users.forEach((user, index) => console.log(index, user)); // 0 Alice, 1 Bob, 2 Charlie

4、reduce

功能:对数组中的元素进行累积操作,可以将数组聚合为一个单一的值。

const sum = [1, 2, 3, 4].reduce((acc, curr) => acc + curr, 0); // 10

二、组合使用

1.使用 map 和 filter

筛选出数组中的偶数,并将每个偶数加 1。

const numbers = [1, 2, 3, 4, 5];
const result = numbers.filter(num => num % 2 === 0).map(num => num + 1); // [3, 5]

2.使用 map 和 forEach

输出数组中每个元素的平方。

const numbers = [1, 2, 3];
numbers.map(num => num * num).forEach(num => console.log(num)); // 1,4,9

3.使用 map 和 reduce

计算数组中所有偶数的和。

const numbers = [1, 2, 3, 4, 5];
const sumOfEven = numbers.filter(num => num % 2 === 0).reduce((acc, curr) => acc + curr, 0); // 6 (2 + 4)

4.使用 forEach 和 filter

动态创建一个对象,记录相同名称的数量。

const phones = [
  { name: "PhoneA", price: 500 },
  { name: "PhoneA", price: 500 },
  { name: "PhoneB", price: 1000 }
];
const counts = {};
phones.forEach(phone => {
  const filteredPhone = phones.filter(p => p.name === phone.name);
  counts[phone.name] = filteredPhone.length;
});
console.log(counts); // { PhoneA: 2, PhoneB: 1 }

5.使用 map、filter 和 reduce

将两个数组合并为一个数组,并去重。

const array1 = [1, 2, 3];
const array2 = [3, 4, 5];
const merged = array1.concat(array2).filter((num, index, self) => self.indexOf(num) === index); // [1,2,3,4,5]

统计数组中每种数字的出现次数。

const numbers = [1, 2, 2, 3, 3, 3];
const counts = numbers.reduce((acc, num) => {
  acc[num] = (acc[num] || 0) + 1;
  return acc;
}, {});
console.log(counts); // { '1': 1, '2': 2, '3': 3 }

6.使用 map 和 filter

处理嵌套数组。

const users = [
  { name: "Alice", age: 25, skills: ["JavaScript", "React"] },
  { name: "Bob", age: 30, skills: ["Python", "Django"] },
  { name: "Charlie", age: 35, skills: ["JavaScript", "Node.js"] }
];

// 获取所有 JavaScript 开发者的技能
const javascriptDevelopersSkills = users
  .filter(user => user.skills.includes("JavaScript"))
  .map(user => user.skills);
// [
//   ["JavaScript", "React"],
//   ["JavaScript", "Node.js"]
// ]

7.使用some 和every

检查是否满足条件。
some 方法用于检查数组中是否至少有一个元素满足条件,every 方法用于检查是否所有元素都满足条件:

let array = [1, 2, 3, 4, 5];
let hasEven = array.some((num) => num % 2 === 0); // 检查是否有偶数
let allEven = array.every((num) => num % 2 === 0); // 检查是否都是偶数

8.使用reduce 与 Object.assign

将 array 中的元素组合成一个对象。

let array = [["key1", "value1"], ["key2", "value2"]];
let obj = array.reduce((acc, [key, value]) => Object.assign(acc, { [key]: value }), {});
// { key1: "value1", key2: "value2" }。

三、利用map返回值实现的简便写法

1. map 与 parseInt

将字符串数组中的元素转换为整数:

let strArray = ["1", "2", "3"];
let intArray = strArray.map(parseInt);
// [1, 2, 3]

2. map 与 parseFloat

将字符串数组中的元素转换为浮点数:

let strArray = ["1a", "2b", "3c"];
let intArray = strArray.map(parseFloat);
 // [1, 2, 3]

3. map 与 Number

将字符串数组转换为数字数组(可以是整数或浮点数):

let strArray = ["1.23", "4", "5.67"];
let numArray = strArray.map(Number);
// [1.23, 4, 5.67]

4. map 与 String

将数组中的元素都转换为字符串:

let numArray = [1, 2, 3];
let strArray = numArray.map(String);
// ["1", "2", "3"]

http://www.kler.cn/a/544076.html

相关文章:

  • 游戏内常见加密
  • 【云安全】云原生-K8S- kubeconfig 文件泄露
  • 【AIGC】在VSCode中集成 DeepSeek(OPEN AI同理)
  • leetcode day17 二分查找 34+367 移除元素27
  • 【R语言】相关系数
  • 基于YoloV11和驱动级鼠标模拟实现Ai自瞄
  • Golang GORM系列:GORM CRUM操作实战
  • 机试题——移动01字符串
  • Java 实现:在 Word 模板指定位置贴二维码并生成 PDF 电子凭证文档
  • Flutter 的 Widget Key 提议大调整?深入聊一聊 Key 的作用
  • Python中的HTTP客户端库:httpx与request | python小知识
  • 本地部署DeepSeek摆脱服务器繁忙
  • 在 Mac ARM 架构上使用 nvm 安装 Node.js 版本 16.20.2
  • Spring Cloud — 深入了解Eureka、Ribbon及Feign
  • Microsoft Word xml 字符非法解决
  • PyCharm 批量替换
  • java后端开发day12--面向对象
  • 【k8s应用管理】kubernetes Pod控制器
  • 推荐一个免费的、开源的大数据工程学习教程
  • 使用Python爬虫获取1688工厂档案信息:深入解析
  • 传统CV到深度学习:特征工程与卷积神经网络实战(进阶篇)
  • 面试准备——Java理论高级【笔试,面试的核心重点】
  • 什么是XMLHttpRequest?及其详细使用说明
  • 功能测试的范畴与目标
  • 通过环境变量实现多个 python 版本的自由切换以及 Conda 虚拟环境的使用教程
  • 深入探究 Rust 测试:灵活控制测试的执行方式