jQuery выполняет итерацию по объекту с помощью $.each
Вопрос
У меня есть объект options
: options = {title : 'title1', name : 'name1', url : 'url1', etc.}
который передается в качестве параметра функции.Я пытаюсь выполнить итерацию по этому объекту, передать его через другую функцию evaluate
, и сохраните результат в другом объекте opts
, вот так:
var opts = new Object();
$.each(options, function(key,value){
opts.key = evaluate(element, value);
});
Тот Самый evaluate(element,value)
работает нормально, но проблема в том, что opts
в конечном итоге все выглядит так, как будто:
{key : eval(element,url1)}
вместо того, чтобы
{title : eval(element,title1), name : eval(element,name1), etc.}
Это, key
передается буквально вместо того, чтобы оцениваться, и перезаписывается с каждой итерацией последним свойством в options
.
Есть ли у меня правильный синтаксис в строке назначения?Я тоже пытался:
opts = {key : eval(element,val)}
который дал тот же результат, что и выше.Я также могу преобразовать объект в массив внутри $.each
итерация.Я пробовал несколько способов сделать это, тоже безуспешно.Если кто-нибудь сможет показать мне этот маршрут, это тоже было бы здорово.
(Это для плагина jQuery, и я тестирую его с помощью Firebug в Firefox).
Заранее благодарю за вашу помощь.
Решение
Как вы уже обнаружили, это буквальный ключ "key":
opts.key = evaluate(element, value);
Чтобы использовать динамический ключ, используйте []
:
opts[key] = evaluate(element, value);
Конкретный пример:
var o = {};
o["test"] = "foo";
alert(o.test);