js 基础知识 forEach 和 map 的区别,及 map 不加 return 返回什么

问题一:forEach 和 map 之间的区别:

1、forEach 不返回新数组,map 返回新数组,其中包含回调函数的返回值。

2、用途:如果只想要遍历数组并对每个元素执行某些操作而不产生新数组,那么应该使用 forEach,如果想要基于原数组创建一个新数组,每个元素都是原数组元素经过某种变换后的接口,那么应该是用 map。

3、链式调用:由于 map 返回一个新数组,它可以与其他数组方法链式调用,而 forEach 不返回数组,因此不适合链式调用场景。

问题二:怎么在 forEach 函数中返回值,try catch 方式

const numbers = [1, 2, 'three', 4, 5]; // 包含一个非数字的字符串  
let errors = []; // 用于收集错误的数组  
  
numbers.forEach(function(number) {  
  try {  
    // 尝试将每个元素转换为数字  
    const num = Number(number);  
    console.log(num); // 假设这是你要执行的操作  
  } catch (error) {  
    // 如果转换失败,捕获错误并添加到错误数组中  
    errors.push(error);  
  }  
});  
  
// 处理或返回错误数组  
console.log(errors); // 输出任何在转换过程中发生的错误
const numbers = [1, 2, 'three', 4, 5];  
  
const processNumber = async number => {  
  try {  
    const num = Number(number);  
    console.log(num); // 假设这是你要执行的异步操作  
    return num; // 返回处理结果  
  } catch (error) {  
    console.error(error); // 处理错误  
    throw error; // 重新抛出错误以便在 Promise.all 中捕获  
  }  
};  
  
// 使用 Promise.all 处理所有异步操作  
Promise.all(numbers.map(processNumber))  
  .then(results => {  
    console.log(results); // 输出所有成功处理的结果  
  })  
  .catch(errors => {  
    console.error(errors); // 输出任何在处理过程中发生的错误  
  });

问题二:map 函数如果不写 return 会返回什么?

// 场景一
const arr = [{name:'测试1'},{name:'测试2'},{name:'测试3'}].map(item=>{item})
console.log('arr::',arr);// [undefined, undefined, undefined]
// 场景二 map 当 filter 使用时
const arr = [{name:'测试1'},{name:'测试2'},{name:'测试3'}].map(item=>item.name=='测试2');
console.log('arr::',arr);// [false,true,false]

简单总结一下问题二的原因:

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值