Javascript 从另一个数组中获取具有相同项的项的最佳做法是什么

Javascript 从另一个数组中获取具有相同项的项的最佳做法是什么,javascript,loops,Javascript,Loops,好的,我知道题目很复杂,但问题也很难用一句话来回答。。对不起 目标:我想在所有模块都可用时运行回调 问题:什么是最快的方法? 例如: 问题从函数“runCallbacks”开始,该函数获取所有新添加的对象,如下所示: runCallbacks(newItems/*as array ['a','b','c'];*/){ // now I would need to understand the dependencies of the callbacks // each callba

好的,我知道题目很复杂,但问题也很难用一句话来回答。。对不起

目标:我想在所有模块都可用时运行回调 问题:什么是最快的方法? 例如:

问题从函数“runCallbacks”开始,该函数获取所有新添加的对象,如下所示:

runCallbacks(newItems/*as array ['a','b','c'];*/){
    // now I would need to understand the dependencies of the callbacks
    // each callback might depend on one or more objects
    // iNeed(['a','b'], toRunThis);
    //           |          |-callback to run when those are ready
    //           |-are the dependencies
我想的是:

 callbacks = [[[callbackFunction],['loadedItems'],['notLoadedItems']]]
              |-----------it's a single callback--------------------|
你有没有更好的主意? 谢谢

另一个例子

this.use(['a', 'b'], function(){/* do something with 'a' and 'b' only when are ready */})
use: function(paths, callback, target/*not used in this case*/){
    // "a", "b", 'c' module is available
    // "d", 'e' module is not available
    this.callbacks.push([[target], ['a', 'b', 'c'], ['d', 'e']]);
    //                               |      |-not loaded
    //                               |-loaded
}

// then an object might be added
this.add({...})

// then will check if this new object may make some callbacks to run
function(newPaths/* ['d'] */){
    // loop all callbacks items
    // remove items from [not loaded array] and put to [loaded array] if
    // exists in newPaths
    // in this case the callback already has: a,b,c; but misses: d,e;
    // now it will add "d" to the loaded array
    // and now only miss the "e" path
因此,如果回调需要“a”和“b”,但不存在,则在两个都准备好时保存回调 我添加了“a”和“b”模块,然后我想知道witch回调已经准备好运行了

回调可能有多个依赖项 “a”模块可能被多个回调使用
这就是为什么在运行jquery时会有点复杂的原因。请查看$。否则,会有类似于promises.js的库(此处解释:)。“承诺”的理念是在相关问题准备好并解决后触发事件。“a”、“b”和“c”元素是您所讨论的模块吗?您是否需要定期相交?或者问题是什么?你需要澄清。@Jad:是的,这些是modules@jishi:我不知道什么是常规相交,但请检查我的新更新。这里的想法是快速、简单和低级,因为这是框架的核心。我无法实现事件系统,因为在这种情况下不需要。在这种情况下,硬编码是更好的选择