我知道我可以将如下所示的函数传递给数组方法.map()
:
var cities = ["rome", "san francisco", "tokyo"];
var cityLen = cities.map(x => x.length);
console.log(cityLen)
// OUTPUT: [4, 13, 5]
我将一个参数(x
)传递给map
中的匿名函数,其中x
逐渐分配给cities
的每个元素。>
在下面的代码中,两个参数(d
和i
)已传递给匿名函数。
function numberRange (start, end) {
return new Array(end - start).fill().map((d, i) => i + start);
}
numberRange(10, 20)
// OUTPUT [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
匿名函数中的参数d
和i
是什么,如何分配它们?多个参数函数如何与.map()
一起使用?
答案 0 :(得分:2)
如您所见on MDN,用三个参数调用Array#map
:
这样调用map
时,将使用数组及其索引(和数组,但未为其声明参数)中的每个值。
旁注:您可以避免不必要地多次遍历数组(基本上是将fill
和map
与Array.from
组合在一起:
return Array.from({length: end - start}, (d, i) => i + start);
Array.from
使用当前值和索引调用其回调。
示例:
function numberRange (start, end) {
return Array.from({length: end - start}, (d, i) => i + start);
}
console.log(numberRange(10, 20));
您还可以通过增加i
来避免完全使用start
:
return Array.from({length: end - start}, () => start++);
示例:
function numberRange (start, end) {
return Array.from({length: end - start}, () => start++);
}
console.log(numberRange(10, 20));
答案 1 :(得分:2)
除了第二个参数(通常是forEach
,some
,every
,map
的实际元素的索引之外,您可以使用Array.from
,该对象根据具有length属性的对象生成一个数组,并具有用于映射函数的第二个参数。
function numberRange (start, end) {
return Array.from({ length: end - start}, (_, i) => i + start);
}
console.log(numberRange(10, 20));