Получить все функции, которые существуют в lodash - PullRequest
1 голос
/ 03 февраля 2020

Мне нужно получить все функции от Лоды sh. Что-то вроде

_.filter(Object.getOwnPropertyNames(_), val => _.iFunction(val))

Ответы [ 3 ]

5 голосов
/ 03 февраля 2020

Я не уверен, каков ваш вариант использования, но вы могли бы сделать это

const _ = require("lodash");

const functions = _.filter(Object.getOwnPropertyNames(_), val => {
  return _.isFunction(_[val])
});

console.log(functions);

1 голос
/ 03 февраля 2020

Вам просто нужно импортировать библиотеку loda sh и выполнить Object.keys() в сочетании с операцией filter, чтобы найти только функцию loda sh, как показано ниже:

var functions = Object.keys(_).filter((key) => typeof _[key] === 'function');
console.log(functions);
<script src="https://unpkg.com/lodash@4/lodash.min.js"></script>

Причина, по которой ваш код не работал, заключалась в том, что вы проверяли имя свойства как функцию или нет. Вместо этого вам нужно проверить, является ли объявление свойства типом функции или не используется _[val]:

console.log(_.filter(Object.getOwnPropertyNames(_), val => _.isFunction(_[val])))
<script src="https://unpkg.com/lodash@4/lodash.min.js"></script>
0 голосов
/ 05 февраля 2020

Loda sh имеет страницу на своем официальном сайте , в которой перечислены все доступные функции и свойства. Вы можете извлечь страницу и затем извлечь содержимое этой страницы из их официальной учетной записи Github , используя JavaScript Fetch API , и назначить извлеченные данные переменной скажем, * 1009. * используя async / await .

Теперь вы можете использовать регулярное выражение, чтобы отфильтровать все функции и свойства на странице и присвоить его переменной, скажем, x.

Список всех функций, а также свойства loda sh теперь доступны в виде массива в переменной x.


. Проверьте и запустите следующий фрагмент кода для практического примера: вышеуказанный подход:

const list = document.querySelector('#lodashFuncs ul');

async function getLodashFuncs() {
  let response = await fetch("https://raw.githubusercontent.com/lodash/lodash.com/master/docs/4.17.15.html");
  let data = await response.text();
  return data;
}

getLodashFuncs().then(data => {
	const x = data.match(/(?<=\/a><code>).*?(?=<\/code><\/h3)/g);
  x.forEach(e=> {
  	list.innerHTML += `<li>${e}</li>`
  })
  
});
<div id="lodashFuncs">
  <ul></ul>
</div>

Обратите внимание, что этот подход не совсем лучший способ сделать это, и я определенно рекомендую выполнить фильтрацию по списку свойств объекта, используя комбинация метода filter () и метода Object.getOwnPropertyNames () , как показано в других ответах.

...