国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

受下劃線庫(kù)啟發(fā),努力重寫(xiě)調(diào)用函數(shù)
P粉990008428
P粉990008428 2024-03-31 09:42:10
0
2
578

我是一個(gè)初學(xué)者,正在嘗試重寫(xiě)下劃線函數(shù)_.invoke。 我正在嘗試創(chuàng)建該函數(shù),以便它返回一個(gè)數(shù)組,其中包含對(duì)集合中的每個(gè)值調(diào)用該方法的結(jié)果。

_.invoke = function(collection, methodName) {
  var result = [];
  if (Array.isArray(collection)) {
    for (let i = 0; i < collection.length; i++) {
      methodName.call(collection[i])
      var value = collection[i][methodName]
      result.push(value)
    }
  }
  return result
}

我認(rèn)為我的問(wèn)題出在這一行:

methodName.call(collection[i]) - 想調(diào)用對(duì)象 collection[i] 上的方法,但我想傳遞一些參數(shù)(如果它們包含在單元測(cè)試中)。

到目前為止,我已經(jīng)嘗試使用測(cè)試: typeof(methodName) === "function" 并編寫(xiě)一個(gè)函數(shù)來(lái)測(cè)試該方法是否是一個(gè)函數(shù)。

P粉990008428
P粉990008428

全部回復(fù)(2)
P粉165522886

在這里您可以使用參數(shù)進(jìn)行調(diào)用。

_.invoke = function(collection, methodName, ...args) {
  if (!Array.isArray(collection)) {
     return [];
  }
  const out = []; 
  for(const item of collection){
    if(typeof item[methodName] === 'function')
      out.push(item[methodName].apply(item, args));
    }
  }
  return out;
}

要測(cè)試所有項(xiàng)目都有一個(gè)方法:

const collection = [...];
const allHaveMethod = _.invoke(collection, 'method', 'arg1', 'arg2').length === collection.length;
P粉413704245

你的意思是這樣的嗎?

const myArr = [
  { cons:function(args) { return args } },
  { cons:function(args) { return args["bla"] } },
]

const _ = {};
_.invoke = (collection, methodName, ...args) => !Array.isArray(collection) ? [] : collection
.filter(item => typeof item[methodName] === 'function')
.map(item => item[methodName].apply(item, args));

const res = _.invoke(myArr,"cons",{"bla":"hello"})
console.log(res)
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板