这道JS笔试题你做对了吗?
2021-05-01 02:28
标签:warning class efi 结果 console empty copy -- ash 昨天在看一道笔试题的时候本以为很简单,但是结果不是我想象的那样,直接上笔试题。 我想象的答案:[{name: ‘1‘}, {name: ‘1‘}, {name: ‘1‘}, {name: ‘1‘}, {name: ‘1‘}]; 实际的答案:[empty × 5] 为什么会这样了? 我第一个想到的是new Array(5)生成的数组是[undefined, undefined, undefined, undefined, undefined]。 猜想1错误 new Array(5)生成的数组在每一项都没有值,意思就是生成了[,,,,,]一个这样的数组。 猜想2正确(这里大喊自己牛逼) map依次为数组中的每个元素调用一次提供的callback函数,然后根据结果构造一个新的数组。-----仅对已分配值(包括)的数组索引进行调用----。 map函数的回调函数只会被赋过值的项调用。new Array(1) 和 [undefined]不一样。new Array(1)没有为数组中的项赋过值,而[undefined]为数组中的项赋了一个undefined值。 这道JS笔试题你做对了吗? 标签:warning class efi 结果 console empty copy -- ash 原文地址:https://www.cnblogs.com/login123/p/12149241.htmlconst array = new Array(5).map((item) => {
return item = {
name: ‘1‘
}
});
console.log(array);
// 请写出输出结果
猜想1
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‘}];
猜想2
const array = [,,,,,];
const newArr = array.map((item) => {
return item = {
name: ‘1‘
}
});
console.log(newArr);
// 结果是[empty × 5];
为什么
总结
优化处理
// 处理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‘}];
上一篇:AU3--jQuery网页操作