Как передать лямбду в качестве параметра в Javascript? - PullRequest
1 голос
/ 07 ноября 2019

У меня есть большая функция в Javascript, мне нужно повторить ту же логику, за исключением строки ниже, которая отличается:

config.some(x => x.site === text)

Другая функция будет делать то же самое, но вместофильтруя по САЙТУ, он будет фильтровать по ИМЯ:

config.some(x => x.name === text)

Я хочу передать SITE или NAME в качестве параметра методу. Как я могу это сделать?

Я надеялся на что-то вроде этого:

myMethod(lambda) {
   config.some(lambda === text)
}

И звонил как:

this.myMethod(x => x.site);

Ответы [ 2 ]

4 голосов
/ 07 ноября 2019

Если вы хотите передать имя параметра, это можно сделать следующим образом:

myMethod(key) {
   config.some(x => x[key] === text)
}
myMethod('name');

Реализация прохождения "лямбда" будет выглядеть следующим образом:

myMethod(lambda) {
   config.some(x => lambda(x) === text)
}
const nameLambda = (x) => x.name;
myMethod(nameLambda);
1 голос
/ 07 ноября 2019

Вы можете передать лямбда-аргумент непосредственно в функцию some.
Вот пример с фильтром.

function methodWithLambda(lambda) {
  let data = [
    1,2,3,4,5,6,7,8
  ]
  
  return data.filter(lambda);
}

console.log(methodWithLambda(x => x > 4));
console.log(methodWithLambda(x => x < 7));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...