一道js笔试题, 刷新了我对map方法函数的认知,你做对了吗?

背景

昨天在看一道笔试题的时候本以为很简单,但是结果不是我想象的那样,直接上笔试题。

const array = new Array(5).map((item) => {
   
  return item = {
   
    name: '1'
  }
});
console.log(array);
// 请写出输出结果

我想象的答案[{name: '1'}, {name: '1'}, {name: '1'}, {name: '1'}, {name: '1'}];

实际的答案:[empty × 5]

为什么会这样了?

猜想1

我第一个想到的是new Array(5)生成的数组是[undefined, undefined, undefined, undefined, undefined]

const array = [undefined, undefined, undefined, undefined, undefined];
const newArr = array.map((item) => {
   
  return item = {
   
     name: '1'
   }  
});
console.log(newArr);
// 结果是[{name: '1'}, {name: '1'}, {name: '1'}, {name: '1'}, {name: '1'}];

猜想1错误

猜想2

new Array(5)生成的数组在每一项都没有值,意思就是生成了[,]一个这样的数组。

const array = [,,,,,];
const newArr = array.map((item) => {
   
  return item = {
   
     name: '1'
   }  
});
console.log(newArr);
// 结果是[empty × 5];

猜想2正确(这里大喊自己牛逼)

为什么

map calls a provided callback function once for each element in an array, in order, and constructs a new array from the results. callback is invoked only for indexes of the array which have assigned values (including undefined).
It is not called for missing elements of the array; that is:

  • indexes that have never been set;
  • which have been deleted; or
  • which have never been assigned a value.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值