<<= 1
на каждой итерации, или сначала собирайте в цикле полную маску, и после применяйте один раз. const search = this.state.searchValue;
Promise.all(this.state.roots.map(n => {
return axios.get(`${n}?search=${search}`).then(response => {
return response.data.results.map(item => ({
name: item.name,
rootName: n.split('/')[4],
}));
}).catch(() => []);
})).then(results => {
this.setState({
options: results.flat(),
});
});
event.preventDefault();
. задал аттрибут test и его видно
const setParams = (url, params) =>
Object.entries(params).reduce((acc, [ k, v ]) => {
const reg = RegExp(`${k}-\\d+(/?)`);
return reg.test(acc)
? acc.replace(reg, v !== null ? `${k}-${v}$1` : '')
: v !== null
? `${acc}${acc[acc.length - 1] === '/' ? '' : '/'}${k}-${v}`
: acc;
}, url);
const url = 'http://sitename.net/somedirectory/14545/count-1145/specific-345';
const params = [
{ count: 666 },
{ count: 666, specific: 187 },
{ count: null, specific: null },
{ count: null, specific: 187, xxx: 69 },
{ specific: 0 },
];
const newUrls = params.map(n => setParams(url, n));