使用 TypeScript 映射中的默认参数了解 HOF
Understanding HOF with default parameter in TypeScript map
我在 JS/TS 地图中使用 HOF。我的函数有一个默认参数。
map
似乎将数组元素转换为函数列表参数。
你能为我解释得更深入吗?
这里我做了几个简单的例子
数组中的单个元素:
function add(a: number, b: number = 1) {
console.log(b) // 0
return a + b
}
console.log([1].map(add)) // [1]
数组中的多个元素:
function add(a: number, b: number = 1) {
console.log(b) // 1,2
return a+b
}
console.log([1,2,3].map(add)) // [1, 3, 5]
JS map function 收到一个回调函数,回调函数中包含三个参数:
map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[];
- 正在处理数组中的当前元素。
- 数组中正在处理的当前元素的索引。
- 调用了数组映射
所以当你把它放在地图函数中时,它作为一个回调函数工作:
function add(a: number, b: number = 1) {
console.log(b) // 0
return a + b
}
这在有意义的命名中也意味着:
function add(currentValue: number, index: number) {
return currentValue + index;
}
正如我之前写的,a 是 The current element is being processed in the array
,b 是 The index of the current element being processed in the array
。
所以你上面的函数类似这样:
console.log([1].map((a, b) => a + b))
console.log([1,2,3].map((a, b) => a + b));
或者这个,参数命名更有意义:
console.log([1].map((currentValue, index) => currentValue + index))
console.log([1,2,3].map((currentValue, index) => currentValue + index));
如果你看到地图语法是
map((element, index, array) => { ... } )
元素
数组中正在处理的当前元素。
索引可选
当前正在处理的元素在数组中的索引。
数组可选
调用了数组映射。
你的功能
function add(a: number, b: number = 1) {
console.log(b) // 0
return a + b
}
console.log([1].map(add)) // [1]
正在接受
元素=>一个
index可选=> b
所以你所做的是将数组值与它的索引相加,你的 b 永远不会被分配给 1 因为你总是得到元素的索引。
在上面的调用中,你的
a 将为 1(实际数组第一个元素)
b 将为 0(第一个元素的索引)
你得到的结果是 1+0 = 1
数组中的多个元素同样如此
我在 JS/TS 地图中使用 HOF。我的函数有一个默认参数。
map
似乎将数组元素转换为函数列表参数。
你能为我解释得更深入吗?
这里我做了几个简单的例子
数组中的单个元素:
function add(a: number, b: number = 1) {
console.log(b) // 0
return a + b
}
console.log([1].map(add)) // [1]
数组中的多个元素:
function add(a: number, b: number = 1) {
console.log(b) // 1,2
return a+b
}
console.log([1,2,3].map(add)) // [1, 3, 5]
JS map function 收到一个回调函数,回调函数中包含三个参数:
map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[];
- 正在处理数组中的当前元素。
- 数组中正在处理的当前元素的索引。
- 调用了数组映射
所以当你把它放在地图函数中时,它作为一个回调函数工作:
function add(a: number, b: number = 1) {
console.log(b) // 0
return a + b
}
这在有意义的命名中也意味着:
function add(currentValue: number, index: number) {
return currentValue + index;
}
正如我之前写的,a 是 The current element is being processed in the array
,b 是 The index of the current element being processed in the array
。
所以你上面的函数类似这样:
console.log([1].map((a, b) => a + b))
console.log([1,2,3].map((a, b) => a + b));
或者这个,参数命名更有意义:
console.log([1].map((currentValue, index) => currentValue + index))
console.log([1,2,3].map((currentValue, index) => currentValue + index));
如果你看到地图语法是
map((element, index, array) => { ... } )
元素 数组中正在处理的当前元素。
索引可选 当前正在处理的元素在数组中的索引。
数组可选 调用了数组映射。
你的功能
function add(a: number, b: number = 1) {
console.log(b) // 0
return a + b
}
console.log([1].map(add)) // [1]
正在接受
元素=>一个
index可选=> b
所以你所做的是将数组值与它的索引相加,你的 b 永远不会被分配给 1 因为你总是得到元素的索引。
在上面的调用中,你的
a 将为 1(实际数组第一个元素)
b 将为 0(第一个元素的索引)
你得到的结果是 1+0 = 1
数组中的多个元素同样如此