重写——Javascript中的每个函数不返回

重写——Javascript中的每个函数不返回,javascript,node.js,callback,underscore.js,Javascript,Node.js,Callback,Underscore.js,我试图提高我在JS方面的技能,并重写underline.JS实用程序函数。我被第一条卡住了:每一条。这就是我到目前为止所做的,但当我在节点中运行它时,迭代器传递给每个节点时不会返回任何内容?请帮忙 //_.each(list, iteratee, [context]); iteratee(element,index,list); var arr = [1,2,3,4]; var each = function(list, iteratee) { for (var i = 0; i &

我试图提高我在JS方面的技能,并重写underline.JS实用程序函数。我被第一条卡住了:每一条。这就是我到目前为止所做的,但当我在节点中运行它时,迭代器传递给每个节点时不会返回任何内容?请帮忙

//_.each(list, iteratee, [context]); iteratee(element,index,list);

var arr = [1,2,3,4];

var each = function(list, iteratee) {
    for (var i = 0; i < list.length; i++) {
        iteratee(list[i], i, list);
    }
}

var iterator = function(element, i, list){
    return element * 2;
}

each(arr,iterator);
我做错了什么?将来重写这些函数的方法是什么?最好的方法是什么? 谢谢。

对于要返回内容的每个函数,您实际上需要返回一些内容:

var arr = [1,2,3,4];

var each = function(list, iteratee) {
    for (var i = 0; i < list.length; i++) {
        // Write return value back to array
        list[i] = iteratee(list[i], i, list);
    }
    // return array
    return list;
}

var iterator = function(element, i, list){
    return element * 2;
}

each(arr,iterator);

这将返回数组,下划线和其他常用库正在执行的操作是返回一个包装集以启用链接u.each.map.bla。所有这些库都是开源的,所以我建议您实际查看源代码以了解它们是如何运行的

即使是现有的each函数也不会返回什么?你不是真的想写一个映射函数吗?你的代码看起来不错,但是你所写的任何东西都不会显示任何输出。如果您将迭代器更改为console.logelement*2,那么您应该开始了解发生了什么。lol!真尴尬。谢谢Matt。每个人都不应该修改阵列。你在这里写的更像是一个变异的Mapwell,每个都不应该返回一个数组,我的目标不是重新实现每个函数,而是转换OPs代码,让它真正起作用。谢谢LJ。我调用或不调用什么来处理我编写的代码?我已经定义了迭代器,并将其作为回调传递给每个迭代器,该回调应返回元素*2。为什么什么都不返回?您的迭代器返回的是加倍的值,但您没有对其执行任何操作,这就是我在修改后的代码段中将其写回数组的地方。