Я создаю querystring из предоставленных аргументов функции Javascript. Я перебираю массив аргументов и хочу иметь аргументName и его значение.Есть ли способ получить имя и значение аргумента при циклическом перемещении массива аргументов?
Thans
Я создаю querystring из предоставленных аргументов функции Javascript. Я перебираю массив аргументов и хочу иметь аргументName и его значение.Есть ли способ получить имя и значение аргумента при циклическом перемещении массива аргументов?
Thans
Вам нужно написать функцию по-другому, так как невозможно выполнить то, что вы просите, и это не имеет никакого смысла, если вы думаете об этом; что, если ваша функция вызывается с выражениями и другими вызовами функций в списке аргументов?
Вместо написать такую функцию:
function yourFunction(object) {
for (argName in object) {
if (object.hasOwnProperty(argName)) {
var argValue = object[argName];
// now argName is an argument name, and
// argValue is the value, and you can do
// whatever you like
}
}
}
При вызове функции, вы будете делать это:
if (whatever)
yourFunction({ arg1: value1, arg2: value2, arg3: value3 });
for(var key in array)
? А затем внутри этого цикла array[key]
для доступа к значению.
, который работает только в том случае, если массив является объектом; если это простой старый массив, он будет «работать», но имена будут 0, 1, 2, 3, ... N-1, где N - длина аргумента функции. –
Массив - это сценарий объекта, потому что ассоциативные массивы не существуют в Javascript. С помощью реальных массивов вы все равно будете иметь нормальный цикл и уже знаете, что такое индекс для каждого значения. Поэтому я не очень ценю голосование (кто бы это ни дал). – CharlesLeaf
Я предполагаю, что моя точка зрения заключалась в том, что переменная 'arguments' не является объектом, это массив. Переменная 'array', о которой вы говорите, должна появиться откуда-то +, ни вы, ни упоминание OP о том, откуда она взялась. (fyi downvote был не от меня) –
Я так не считаю. класс Function в Javascript имеет свойство length, но нет способа получить имена аргументов, например. х и у в следующем
g = function(x,y) { return x+y; }
редактировать: Я думаю, технически, учитывая функцию g
вы могли бы назвать
g.toString().match(/function\s+\((.*?)\)/)
, который фиксирует список аргументов функции, то разобрать, что, чтобы получить список имен аргументов.
ОК, кто бы ни был, пожалуйста, дайте полезную причину. –
Нет, это не представляется возможным, и я не уверен, как вы думаете, что это может сработать. Если вы назвали аргументы, то вы знаете об именах аргументов и нет никаких проблем:
function f(arg1, arg2, arg3) {
var params = {
arg1: arg1,
arg2: arg2,
arg3: arg3
};
// Do stuff with params
}
В противном случае, все у вас есть массив, как совокупность значений, не имеющие названий.
Возможно, какой-то пример кода поможет? –