@progerstas

Почему не работает код?

function format(params, method) {
    // https://api.vk.com/method/messages.searchConversations?access_token=xxxxxxxxxxxxxxxxxxxxxxb86074f994def38acf3cd5&v=5.52&fields=5&count=5
    s = 'https://api.vk.com/method/'+method+'?'
    params_list = Object.values(params)
    console.log(params_list)
    for (var v in params_list) {s=s+v+'='+params[v]+'&'}
    return s
}

access_token = '25axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

method = 'wall.get'
token = '38fa46d4cччччччччччччч';
version = 5.78

params = format({
    access_token,
    version
})

console.log(format(params, method))


выводит https://api.vk.com/method/wall.get?0=h&1=t&2=t&3=p...
  • Вопрос задан
  • 193 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Вопрос бессмысленный - код работает. Между "не работает" и "работает не так, как задумано" есть существенная разница. Попытайтесь её осознать.

params = format({

Зачем здесь вызов format? Не нужен.

params_list = Object.values(params)
console.log(params_list)
for (var v in params_list) {s=s+v+'='+params[v]+'&'}

Вот это конечно дичь дикая. Чтобы такое написать, надо не знать, как работает цикл for-in. Разберитесь. Не нужен тут массив значений, перебирать надо было сразу params.

А вообще, всё это делается гораздо проще:

function format(params, method) {
  return `https://api.vk.com/method/${method}?${new URLSearchParams(params)}`;
}

console.log(format({ access_token, version }, method));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы