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

【面试题】JS的一些优雅写法 reduce和map

 大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库  web前端面试题库 VS java后端面试题库大全

JS的一些优雅写法

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属性。

 大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库  web前端面试题库 VS java后端面试题库大全

http://www.lryc.cn/news/43767.html

相关文章:

  • 【蓝桥杯真题】包子凑数(裴蜀定理、动态规划、背包问题)
  • 一种免费将PDF转word的方式
  • MyBatis-面试题
  • jQuery一些问题和ajax操作
  • Pytorch构建自己的数据集
  • 信息论小课堂:纠错码(海明码在信息传输编码时,通过巧妙的信道编码保证有了错误能够自动纠错。)
  • MySQL执行计划(explain)
  • 思必驰回复第二轮审核问询,如何与科大讯飞、阿里巴巴“虎口夺食”?
  • 基于Spring、SpringMVC、MyBatis的汽车租赁系统设计
  • 读《刻意练习》后感,与原文好句摘抄
  • 华为OD机试用java实现 -【选座位】
  • 国产蓝牙耳机怎么挑选?口碑最好的国产蓝牙耳机
  • seaborn从入门到精通03-绘图功能实现02-分类绘图Categorical plots
  • ❤️独特的算法❤️:一文解决编辑距离问题
  • 三次样条样条:Bézier样条和Hermite样条
  • Redis面试题 (2023最新版)
  • 基于springboot实现家乡特色食品景点推荐系统【源码+论文】分享
  • Spring MVC 启动之 HandlerMapping
  • 基于YOLOv5的停车位检测系统(清新UI+深度学习+训练数据集)
  • 【Linux系统编程】5.vim基本操作命令
  • 主流机器学习平台调研与对比分析
  • 作业帮基于明道云开展的硬件业务数字化建设
  • 位图及布隆过滤器的模拟实现与面试题
  • 在 Python 中将天数添加到日期
  • vue3知识点
  • 一行代码生成Tableau可视化图表
  • 链表——删除元素或插入元素(头插法及尾插法)
  • oracle容器的使用
  • 基于springboot会员制医疗预约服务管理信息系统演示【附项目源码】
  • GoogleAdsense国内加载慢怎么解决?