2015-10-07 2 views
-1

Я хочу создать объект на основе значения переменной. Я надеюсь, что следующий код может лучше объяснить, что я хочу:javascript создает объект динамически по значению переменной

$('.tariffCostState').each(function(){ 
     var tariffCostObj = $(this).data('tariff-code-name'); 

/* 
    How do I set the value of tariffCostObj as an object ? 

[EDIT] 
     Imagine that var tariffCostObj='abc'; 
     I want that abc becomes an object: abc={} 
*/ 
     var testObj={}; 

     var tariffCostsInput=$(this).find('input.m2m-tariff-costs-input'); 

     for(var j= 0, inputLen = tariffCostsInput.length; j<inputLen; j++){ 
      var tariffCostsInputId = $(this).find('input.m2m-tariff-costs-input').eq(j).attr('id'); 
      var tariffCostsInputValue= $(this).find('input.m2m-tariff-costs-input').eq(j).val(); 

      testObj[tariffCostsInputId]=tariffCostsInputValue; 

      //The goal is to have: 
      abc[tariffCostsInputId]=tariffCostsInputValue; 



     } 
     console.log(testObj); 

    }); 

Вместо объекта под названием testObj Я хочу, чтобы значение tariffCostObj (азбука, ...) testeObj это просто пример

Благодаря

+0

Возможно, это возможно? '{valueOftariffCostObj: {....}}' –

+0

Просьба показать схему ожидаемого результирующего объекта. Не совсем понятно, какая цель – charlietfl

+1

Имейте в виду, что объект, который вы установили там, виден только внутри '.each()'. Хотите ли вы иметь доступ к нему за пределами каждого? – lshettyl

ответ

0

Не совсем понятно, но я думаю, что вы хотите сделать это:

var testObj={}; 
$('.tariffCostState').each(function(){ 

    var tariffCostObj = $(this).data('tariff-code-name'); 

    if('undefined' === typeof testObj[ tariffCostObj ]) 
     testObj[ tariffCostObj ] = {}; 

/* 
How do I set the value of tariffCostObj as an object ? 
*/ 


    var tariffCostsInput=$(this).find('input.m2m-tariff-costs-input'); 

    for(var j= 0, inputLen = tariffCostsInput.length; j<inputLen; j++){ 
     var tariffCostsInputId = $(this).find('input.m2m-tariff-costs-input').eq(j).attr('id'); 
     var tariffCostsInputValue= $(this).find('input.m2m-tariff-costs-input').eq(j).val(); 

     testObj[ tariffCostObj ][tariffCostsInputId]=tariffCostsInputValue; 


    } 
    console.log(testObj); 

}); 
+0

это на хорошем пути. Но он создает пустой объект внутри основного объекта. Все свойства должны находиться внутри динамического объекта. Я просто редактирую сообщение для лучшего объяснения – peterK

0

Является ли это то, что вы хотели?

var someObjName = "myObj"; 
var someObjPropName = "myProp"; 
var someObjPropValue = "myVal"; 

window[someObjName] = {}; 
window[someObjName][someObjPropName] = someObjPropValue; 

Теперь у вас есть объект с именем myObj с свойством и значением в нем.

Смежные вопросы