动态制作对象

时间:2014-11-07 17:10:27

标签: javascript

如何在Javascript中动态制作对象?

我的期望

var tree_data = {
    'for-sale' : {name: 'For Sale', type: 'folder'} ,
    'vehicles' : {name: 'Vehicles', type: 'folder'} ,
    'rentals' : {name: 'Rentals', type: 'folder'}   ,
    'real-estate' : {name: 'Real Estate', type: 'folder'}   ,
    'pets' : {name: 'Pets', type: 'folder'} ,
    'tickets' : {name: 'Tickets', type: 'item'} ,
    'services' : {name: 'Services', type: 'item'}   ,
    'personals' : {name: 'Personals', type: 'item'}
}

我的尝试

// Here I remove all white space from my string 
var nome = result[indice].Texto.replace(/ /g, '');

// Here I create the item
var novoMenu = {
      pasta: {
           name: result[indice].Texto,
           type: "folder"
      }
}

// and then fill my object
self.tree_data.push(novoMenu);

但是这样我的tree_data对象变得像

{ 
   pasta: {
         name: "For Sale',
         type: 'Folder'
   }
}

pasta应该是没有空格的name。我怎么能用Javascript做到这一点?

2 个答案:

答案 0 :(得分:1)

tree_data是一个对象,而不是一个数组。它应该初始化为:

self.tree_data = {};

然后你的循环应该添加:

self.tree_data[nome] = novoMenu;

答案 1 :(得分:1)

您需要使用该名称作为对象的索引:

// Here I remove all white space from my string 
var theName = result[indice].Texto.replace(/ /g, ''); //Shouldn't this be .replace(/ /g, '-') ?

// Here I create the item
var novoMenu = {};
novoMenu[ theName ] = {
           name: result[indice].Texto,
           type: "folder"
      }
};

// and then fill my json array
self.tree_data.push(novoMenu);