高阶函数javascript
higher order function javascripts
我正在尝试更好地理解并开始使用高阶函数编写 JS。下面只是我在做的一个练习,我想输出一个数字数组 * 2.
function each(collection, callback) {
for(var i = 0; i < collection.length; i++) {
callback(collection[i]);
}
}
function isNumber(item) {
var arr = [];
if(typeof item === "number") {
arr.push(item * 2);
}
return arr;
}
each([1, 2, 3, 4, "String"], isNumber);
根据我的理解,当使用数组和 isNumber 参数调用 each() 函数时,它会遍历 each 函数。当每个函数被调用时,它用数组[i]回调isNumber函数,然后调用那个数组[i]的isNumber函数,如果数组[i]的类型是一个数字,它把那个数字* 2推到一个大批。我期待的输出是
[2, 4, 6, 8] since "String" is not a number it never got pushed into the array.
我是不是理解错了?当我尝试记录此代码时,没有输出显示。
没有输出显示,因为你的函数 return 什么都没有。
在这里,我会让你的回调只应用乘法和return那个值,然后推送到你的每个函数中的一个数组
function each(collection, callback) {
var arr = [];
for(var i = 0; i < collection.length; i++) {
var result = callback(collection[i])
if (typeof result !== 'undefined') {
arr.push(callback(collection[i]));
}
}
return arr
}
function isNumber(item) {
if (typeof item === "number") {
return item * 2;
}
}
我认为这对你有用:
// Let's call this what it is
function getNumbersFromArray(collection, callback) {
var arr = [],
i = 0;
for (; i < collection.length; i++) {
// Check if isNumber and do mutliplication here
if (callback(collection[i])) {
arr.push(item * 2);
}
}
return arr;
}
// Make isNumber actually return a boolean
function isNumber(item) {
return typeof item === "number";
}
// call console.log()
console.log(getNumbersFromArray([1, 2, 3, 4, "String"], isNumber));
我正在尝试更好地理解并开始使用高阶函数编写 JS。下面只是我在做的一个练习,我想输出一个数字数组 * 2.
function each(collection, callback) {
for(var i = 0; i < collection.length; i++) {
callback(collection[i]);
}
}
function isNumber(item) {
var arr = [];
if(typeof item === "number") {
arr.push(item * 2);
}
return arr;
}
each([1, 2, 3, 4, "String"], isNumber);
根据我的理解,当使用数组和 isNumber 参数调用 each() 函数时,它会遍历 each 函数。当每个函数被调用时,它用数组[i]回调isNumber函数,然后调用那个数组[i]的isNumber函数,如果数组[i]的类型是一个数字,它把那个数字* 2推到一个大批。我期待的输出是
[2, 4, 6, 8] since "String" is not a number it never got pushed into the array.
我是不是理解错了?当我尝试记录此代码时,没有输出显示。
没有输出显示,因为你的函数 return 什么都没有。
在这里,我会让你的回调只应用乘法和return那个值,然后推送到你的每个函数中的一个数组
function each(collection, callback) {
var arr = [];
for(var i = 0; i < collection.length; i++) {
var result = callback(collection[i])
if (typeof result !== 'undefined') {
arr.push(callback(collection[i]));
}
}
return arr
}
function isNumber(item) {
if (typeof item === "number") {
return item * 2;
}
}
我认为这对你有用:
// Let's call this what it is
function getNumbersFromArray(collection, callback) {
var arr = [],
i = 0;
for (; i < collection.length; i++) {
// Check if isNumber and do mutliplication here
if (callback(collection[i])) {
arr.push(item * 2);
}
}
return arr;
}
// Make isNumber actually return a boolean
function isNumber(item) {
return typeof item === "number";
}
// call console.log()
console.log(getNumbersFromArray([1, 2, 3, 4, "String"], isNumber));