Словарь с именованными параметрами функции
function getElementByXpath(path, search_scope = document) {
console.log(arguments)
return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}
Как мне получить словарь из аргументов функции с их значениями в таком виде?
{
path: '//span',
search_scope: document
}
Переменная arguments выдает только значения параметров без их имен.
Ответы (1 шт):
Автор решения: yar85
→ Ссылка
В случае функции из юзеркода, можно получить ее строковое представление - а значит, и имена параметров:
function getElementByXpath(path, search_scope = document) {
const argsMap = mapArguments(getElementByXpath, arguments);
console.log(argsMap);
// return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}
function mapArguments(func, args) {
const paramsStr = (func.toString().match(/^[^(]+\(([^)]+)/) ?? [0, ''])[1];
return paramsStr.split(',').reduce((rslt, name, idx) => {
rslt[name.replace(/=.*$/, '').trim()] = args[idx];
return rslt;
}, {});
}
getElementByXpath('//span', document);
Вывод в консоль объекта document не очень показателен, увы :)