问题描述
我正在导入 [faker][1] 库并创建一个 method
以返回所有 [faker][1] 的 methods
,如下所示:
const faker = require('faker')
const getmethods = obj => Object.getownPropertyNames(obj).filter((method) => typeof obj[method] === 'object')
console.log(getmethods(faker))
不过,我才刚到第一级 objects
:
[
'locales','locale','localeFallback','deFinitions','fake','unique','mersenne','random','helpers','name','address','animal','company','finance','image','lorem','hacker','internet','database','phone','date','time','commerce','system','git','vehicle','music','datatype'
]
我想获得属于这些 methods
的所有 objects
。
[1]:https://www.npmjs.com/package/faker
解决方法
感谢@VLAZ 的回答,我可以像这样使用 for ...in
弄清楚:
const faker = require('faker');
const getObjects = (obj) => {
return Object.getOwnPropertyNames(obj).filter((method) => typeof obj[method] === 'object' || typeof obj[method] === 'function');
};
const getMethods = (object) => {
const availableMethods = [];
for (const property in object) {
availableMethods.push(...getObjects(object[property]));
};
return availableMethods;
};
getMethods(faker); // returns all methods in an array