声明一个空数组,设定长度,为何forEach,map都不管用?

135 阅读3分钟

声明一个空数组,设定长度,为何forEach,map都不管用?

一脸懵逼?!

原谅我是小白,大佬请别笑つ﹏⊂

原本是想得到一个计算属性,结果打脸( ̄ε(# ̄)

let arry = [];
arry.length = 12;
return arry.map((m,mindex)=>{
    return {value: mindex, label: `${mindex}月`}
})

然后for如愿输出了索引, (⊙﹏⊙),

var arr = new Array(5); 
for (var i = 0; i < arr.length; i++) { 
    console.log(i); 
}

百度, 额,我放弃,用chatGPT吧,然后得出有效的答案

设置了数组长度后,数组会被分配相应长度的空间,但是这些空间并没有被赋值。在使用 forEach 方法时,由于数组中没有任何元素,所以回调函数不会被执行,因此没有输出任何内容。

数组有哪些方法有回调函数?

JavaScript中的数组有很多方法,其中一些方法可以使用回调函数。 以下是一些常见的数组方法,它们可以接受回调函数作为参数:

  • forEach() :对数组中的每个元素执行回调函数。
  • map() :对数组中的每个元素执行回调函数,并返回一个新的数组。
  • filter() :使用回调函数过滤数组中的元素,并返回一个新的数组。
  • reduce() :使用回调函数将数组的所有元素合并为一个值。
  • some() :使用回调函数检查数组中是否存在满足条件的元素。
  • every() :使用回调函数检查数组中的所有元素是否都满足条件。

这些方法都可以接受回调函数作为参数,并且可以使用回调函数来处理数组中的元素。

哪些方法没有回调函数?

JavaScript中的数组有很多方法,其中一些方法不需要回调函数。以下是一些常见的数组方法,它们不需要回调函数:

  • concat() :连接两个或多个数组,并返回一个新的数组。
  • join() :将数组中的所有元素转换为字符串,并使用指定的分隔符将它们连接起来。
  • slice() :返回数组的一部分。
  • indexOf() :返回指定元素在数组中的索引,如果不存在则返回-1。
  • lastIndexOf() :返回指定元素在数组中最后出现的索引,如果不存在则返回-1。
  • reverse() :颠倒数组中元素的顺序。
  • sort() :对数组中的元素进行排序。
  • toString() :将数组转换为字符串。

这些方法都不需要回调函数,它们执行简单的操作,例如连接数组,截取数组的一部分,或者对数组的元素进行排序等。

如果给定一个空数组长度,如何才能获取一个有有效值的数组?

如果想要创建一个指定长度的数组,并且数组中的所有元素都有有效值,可以使用 Array.from() 方法。例如,要创建一个长度为5的数组,可以使用以下代码:

var arr = Array.from({length: 5}, function(m,i) { return {m,i}; });

你会发现m是undefind, 索引i有值

that`s all ! ending! 希望对你有用