Почему мое присоединение к массиву JavaScript не работает?
У меня есть функция, которая принимает несколько аргументов (только одна функция определена в функции)
var getSearchFields = function(method) {
console.log(arguments); // this prints them out nicely into the console
var args = arguments;
var argsString = args.join('/'); // I expect 'arg1/arg2/arg3', instead I get 'args.join is not a function'
}
Мне просто нужна строка всех аргументов, отправляемых этой функции. Я продолжаю получать эту ошибку:
args.join не является функцией
Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно?
Ответы
Ответ 1
arguments
- псевдо-массив, а не реальный. Метод join
доступен для массивов.
Вам нужно обмануть:
var convertedArray = [];
for(var i = 0; i < arguments.length; ++i)
{
convertedArray.push(arguments[i]);
}
var argsString = convertedArray.join('/');
Подобно другим сообщениям, вы можете сделать следующее как сокращенное:
var argsString = Array.prototype.join.call(arguments, "/");
Ответ 2
Как сказано выше, объект arguments не является массивом, но вы можете напрямую применять функции массива, обратившись к Array.prototype и выполняя их с помощью apply или call, чтобы изменить контекст:
var argsString = Array.prototype.join.call(arguments, '/');
Ответ 3
Если вы используете jQuery 1.2 +, вы можете использовать $.makeArray()
:
Преобразуйте подобный массиву объект в настоящий массив JavaScript.
В примере в вопросе просто используйте эту строку
var args = $.makeArray(arguments);
Ответ 4
аргументы на самом деле не являются массивом.
попробуйте следующее:
var args = [].splice.call(arguments,0);
var argsString = args.join('/');
Ответ 5
arguments
не является массивом JavaScript; это специальный объект, который не имеет метода join
.
Ответ 6
Если вы получаете сообщение HTTP-запроса в angular4 user HttpHeaders. Пожалуйста, проверьте ниже ответ. После usring HttpHeaders моя проблема решена.
this.headers = new HttpHeaders({ 'Authorization': token1, 'X-IBM-Client-Id': 'ddddddd' });
values.join не является функцией в файле http.es5.js Angular 4
Ответ 7
Вам нужно назначить переменную для ее работы.
var a = ['Wind', 'Rain', 'Fire'];
var myVar1 = a.join();
var myVar2 = a.join(', ');
var myVar3 = a.join(' + ');
var myVar4 = a.join('');