我试图通过rest参数进行映射.
MDN说:rest参数语法允许我们将无限数量的参数表示为数组.
所以如果...numbers是一个数组,当我在它上面使用map时,即numbers.map()它所映射的数组是[33,44,55].我现在如何映射...numbers数组的每个元素?我无法进入,numbers.map(numbers.slice(numbers.length - 1))因为每个numbers都是总数组.
TLDR; 我想简单地说,我如何映射其余参数的每个元素?
我没有想法.
function checkLastDigit(num1, num2, num3) {
function collectDigits(...numbers) {
let digitsArr = [];
digitsArr = numbers.map(collectLastDigit());
return digitsArr;
}
function collectLastDigit() {
return this.slice(this.length - 1)
}
return collectDigits(num1, num2, num3);
}
checkLastDigit(33, 44, 55);
Run Code Online (Sandbox Code Playgroud)
它只是一个数组,因此您可以像迭代任何数组一样迭代它。
当前代码存在几个问题:在将回调函数传递给 时不要调用.map回调函数,而只需传递该函数:
digitsArr = numbers.map(collectLastDigit);
Run Code Online (Sandbox Code Playgroud)
另外,数字没有slice方法,因此this.slice不起作用 - 如果您愿意slice,请先强制转换为字符串。您也可以使用slice(-1)而不是传递length - 1. 另外, this不会引用正在迭代的项目 - 相反,使用回调的第一个参数:
digitsArr = numbers.map(collectLastDigit);
Run Code Online (Sandbox Code Playgroud)
如果您想要一个数字数组而不是字符串数组作为结果,请更改collectLastDigit为强制回数字:
const collectLastDigit = num => Number(String(num).slice(-1));
Run Code Online (Sandbox Code Playgroud)
如果您愿意,您也可以使用剩余参数checkLastDigit,而不是只需要 3 个参数:
function checkLastDigit(num1, num2, num3) {
const collectLastDigit = num => String(num).slice(-1);
const collectDigits = (...numbers) => numbers.map(collectLastDigit);
return collectDigits(num1, num2, num3);
}
console.log(checkLastDigit(33, 44, 55));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |