Вопрос

У меня есть объект 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top