2016-04-12 13 views
0

Sonsuz miktarda argüman kabul ediyorum ve kullanıcı ne sağlarsa onu destekliyorum. Bu modüle bir seçenek nesnesi eklemek istiyorum, ancak bunun nasıl çalışacağından emin değilim. Bu kod, seçenekler nesnesini normal paramlardan biri olarak görüyor mu?Sonsuz miktarda argümanı desteklemek istediğimde bir options nesnesini parametre olarak nasıl ekleyebilirim?

module.exports = function() { 
     var args = Array.prototype.slice.call(arguments); 
     var masterObject = []; 

     args.forEach(function (array) { 
     array.map(function (item) { 
      var found = false; 

      for (var i = 0; i < masterObject.length; i++) { 
      if (masterObject[i].word === item.word) { 
       masterObject[i].count += item.count; 
       found = true; 
      } 
      } 

     if (!found) { 
      masterObject.push(item); 
      } 
     }); 
     }); 
     return masterObject; 
}; 

cevap

0

Eh, karar vermeniz gerekir

veya başka bir şey

var mymodule = require('mymodule'); 
mymodule(1, 2, 3, opts); 

var mymodule = require('mymodule')(opts); 
mymodule(1, 2, 3); 

ila

. Birincisi:

module.exports = function (opts) { 
    return function() { 
    var args = Array.prototype.slice.call(arguments); 
    // ... 
    }; 
}; 

ikincisi: Ben bu soruna Amadan tepkisini gibi

module.exports = function (opts) { 
    var args = Array.prototype.slice.call(arguments); 
    opts = args.pop(); 
    // ... 
}; 
0

, sadece ilgili not eklemek istedim: Ben daha sık görmek ne

: sonsuz sayıdaki sonsuz sayısını kabul eden API'ler ve kabul etme seçenekleri, bir dizinin (n uzunluğundaki değerleri içerecek şekilde) ve seçenekler içinden geçen bir nesnenin birleşimini kullanacaktır.

herhangi büyü gerekmez ve API süper temiz Bu şekilde: deli gitmek istiyorum ve ES6 Rest Parameters kullanabilirsiniz, ancak bunu yaparsa, seçenekler parametresi koşacaktı

module.exports = function (array, opts) { 
    // parse your options 
    opts = opts || {}; 

    // loop over array 
    array.forEach(item => { 
    // to infinity, and beyond! 
}); 
} 

önce sağlanmalıdır (ve kullanıcının geçebilecek herhangi bir seçeneği yoksa, null veya boş bir nesne kullanması gerekir, bu da bazı API'lar için tuhaf olabilir, ancak bu probleme yaklaşmanın olası bir yolu olabilir):

module.exports = function (opts, ...args) { 
    // do something with your options 
    opts.foo = opts.foo || true; 

    // now loop through your infinite args 
    args.forEach(item => { 
    console.log(item); 
    }); 
} 
İlgili konular