首页 > 其他分享 >#yyds干货盘点#reduce和map的优雅写法

#yyds干货盘点#reduce和map的优雅写法

时间:2023-04-23 22:33:06浏览次数:30  
标签:yyds name map price 元素 reduce item banana 属性

reduce

1、可以使用 reduce 方法来实现对象数组中根据某一key值求和

例如,假设有以下对象数组:

const arr = [
  { name: 'apple', price: 2 },
  { name: 'banana', price: 3 },
  { name: 'orange', price: 4 },
];
复制代码

如果要根据price属性求和,可以使用以下代码:

const sum = arr.reduce((acc, cur) => acc + cur.price, 0);
console.log(sum); // 9

其中,reduce方法的第一个参数是一个回调函数,它接收两个参数:累加器(acc)和当前元素(cur)。回调函数的返回值会作为下一次调用回调函数时的累加器的值。reduce方法的第二个参数是累加器的初始值,这里设置为0。

在回调函数中,我们将累加器和当前元素的price属性相加,最终得到了所有元素的price属性的总和。

map

1、可以使用map方法来实现对象数组中根据某一key值,取得另外一个key的值。

例如,假设有以下对象数组:

const arr = [
  { name: 'apple', price: 2 },
  { name: 'banana', price: 3 },
  { name: 'orange', price: 4 },
];
复制代码

如果要根据name属性获取price属性,可以使用以下代码:

const prices = arr.map(item => item.name === 'banana' ? item.price : null);
console.log(prices); // [null, 3, null]

其中,map方法的参数是一个回调函数,它接收一个参数:当前元素(item)。回调函数的返回值会作为新数组的元素。在回调函数中,我们判断当前元素的name属性是否等于'banana',如果是,则返回当前元素的price属性,否则返回null。最终得到了一个新数组,其中只有name属性为'banana'的元素的price属性有值,其他元素的price属性为null。

2、可以使用map方法来获取对象数组中根据某一key值得到的元素的price属性,可以使用find方法来实现。

例如,假设有以下对象数组:

const arr = [
  { name: 'apple', price: 2 },
  { name: 'banana', price: 3 },
  { name: 'orange', price: 4 },
];
复制代码

如果要根据name属性获取price属性,可以使用以下代码:

const banana = arr.find(item => item.name === 'banana');
if (banana) {
  console.log(banana.price); // 3
}

其中,find方法的参数是一个回调函数,它接收一个参数:当前元素(item)。回调函数需要返回一个布尔值,表示当前元素是否符合条件。find方法会返回符合条件的第一个元素,如果没有符合条件的元素,则返回undefined。

在回调函数中,我们判断当前元素是否banana,如果是,则返回当前元素。最终得到了一个对象,其中只有name属性为'banana'的元素的price属性有值,其他元素price属性为undefined。我们可以使用if语句来判断是否找到了符合条件的元素,如果找到了,则输出它的price属性。


标签:yyds,name,map,price,元素,reduce,item,banana,属性
From: https://blog.51cto.com/u_11365839/6218845

相关文章

  • Map - TreeSet & TreeMap 源码解析
    Java7-TreeSet&TreeMap总体介绍前者仅仅是对后者做了一层包装,也就是说TreeSet里面有一个TreeMap(适配器模式)。因此本文将重点分析TreeMap。JavaTreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通过其本身的自然顺序(natu......
  • redis之哈希类型-列表类型-集合类型-有序集合-慢查询-pipeline-发布订阅-Bitmap位图-H
    目录redis之哈希类型-列表类型-集合类型-有序集合-慢查询-pipeline-发布订阅-Bitmap位图-HyperLogLog-GEO地理位置昨日内容回顾今日内容详细1哈希类型2列表类型3集合类型4有序集合5慢查询6pipeline与事务7发布订阅8Bitmap位图9HyperLogLog10GEO地理位置redis之哈希类型......
  • Map - LinkedHashSet&Map源码解析
    上篇文章讲了HashMap。HashMap是一种非常常见、非常有用的集合,但在多线程情况下使用不当会有线程安全问题。大多数情况下,只要不涉及线程安全问题,Map基本都可以使用HashMap,不过HashMap有一个问题,就是迭代HashMap的顺序并不是HashMap放置的顺序,也就是无序。HashMap的这一缺点往往会......
  • 如何创建不可变的Map对象
    在Java编程中,创建不可变的Map对象是一项非常重要的任务,这不仅有助于保证程序的线程安全性和安全性,同时还能避免意外的状态变化。本篇博客将详细介绍如何在Java程序中创建不可变的Map对象,以及Java8之前和之后的版本间的差异。什么是不可变类或对象?不可变的类或对象是指在创建后......
  • 如何遍历HashMap集合?
    在Java中,HashMap是一种常用的数据结构,它提供了快速的查找、插入和删除操作。当我们需要遍历HashMap中的所有元素时,可以利用三种不同的方法实现。方法一:使用键值对遍历HashMap中存储的是键值对的形式,因此最简单的方法就是直接遍历键值对。我们可以通过以下代码实现://创建一个Ha......
  • #yyds干货盘点# LeetCode程序员面试金典:在排序数组中查找元素的第一个和最后一个位置
    题目:给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回 [-1,-1]。你必须设计并实现时间复杂度为 O(logn) 的算法解决此问题。 示例1:输入:nums=[5,7,7,8,8,10],target=......
  • #yyds干货盘点# LeetCode面试题:最大矩形
    1.简述:给定一个仅包含 0和1、大小为rowsxcols的二维二进制矩阵,找出只包含1的最大矩形,并返回其面积。 示例1:输入:matrix=[["1","0","1","0","0"],["1","0","1","1","1"],["1","1&quo......
  • 使用nmap扫描端口
    importnmapscanner=nmap.PortScanner()target='192.168.8.121'scanner.scan(target,arguments='-p-')forhostinscanner.all_hosts():print(host)ifscanner[host].state()=='up':print('Host:%s(......
  • 在Go中map[]bool与map[]struct{}性能对比
    在Go中,map[]struct{}在性能和内存消耗方面比map[]bool更好,时间上快了5%,内存消耗少了10%,尤其是在处理大型集合时。众所周知,Go语言没有内置Set,因此开发人员使用map来模仿Set的行为。使用map来实现Set意味着map的值不重要,我们只需要关注键的存在。大多数情况下,人们可能会选择bool,因为......
  • 哈希类型 列表类型 集合类型 有序集合 慢查询 pipeline与事务 发布订阅 Bitmap位图 Hy
    昨日回顾#1redis介绍 -特性#速度快:10wops(每秒10w读写),数据存在内存中,c语言实现,单线程模型#持久化:rdb和aof#多种数据结构:5大数据结构BitMaps位图:布隆过滤器本质是字符串HyperLogLog:超小内存唯一值计数,12kbHyperLogLog本质是......