当前位置:首页 > Web开发 > 正文

这道JS笔试题你做对了吗?

2024-03-31 Web开发

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

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依次为数组中的每个元素挪用一次供给的callback函数,,然后按照功效结构一个新的数组。-----仅对已分配值(包孕)的数组索引进行挪用----。 map函数的回调函数只会被赋过值的项挪用。new Array(1) 和 [undefined]不一样。new Array(1)没有为数组中的项赋过值,而[undefined]为数组中的项赋了一个undefined值。

总结

new Array(5)孕育产生的数组是一个没有为数组中的项赋过值的数组。

map仅对已分配值(包孕)的数组索引进行callback挪用。

优化措置惩罚惩罚 // 措置惩罚惩罚1 const array = new Array(5).fill().map((item) => { return item = { name: ‘1‘ } }); console.log(array); // [{name: ‘1‘}, {name: ‘1‘}, {name: ‘1‘}, {name: ‘1‘}, {name: ‘1‘}]; // 措置惩罚惩罚2 var array = Array.apply(0,{length:5}).map((item) => { return item = { name: ‘1‘ } }); console.log(array); // [{name: ‘1‘}, {name: ‘1‘}, {name: ‘1‘}, {name: ‘1‘}, {name: ‘1‘}];

这道JS笔试题你做对了吗?

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32284.html