const isObject = obj => obj === Object(obj); const mapOptionsToLink = options => { const multipleOptions = ["grad"]; return Object.entries(options) .filter(([optionName, optionValue]) => optionValue !== false) .map(([optionName, optionValue]) => isObject(options[optionName]) ? [optionName, options[optionName].value] : [optionName, optionValue] ) .map( ([optionName, optionValue]) => !console.log(optionName, optionValue) && [optionName, optionValue] ) .reduce((acc, [optionName, optionValue]) => { console.log(optionName, typeof optionName); if (multipleOptions.some(option => ~optionName.indexOf(option))) { const whatOption = multipleOptions.filter( option => ~optionName.indexOf(option) )[0]; return acc + `${whatOption}[]=${optionValue}&`; } return acc + `${optionName}=${optionValue}&`; }, ""); }; export const createOlxLink = (category, subcategory, options) => { const categoryChoice = (Boolean(Object.keys(subcategory).length) && subcategory[ Object.keys(subcategory).reduce((max, key) => (max < key ? key : max)) ]) || category; return categoryChoice ? `kategorija=${categoryChoice.value}&${mapOptionsToLink(options)}` : ""; };