如何在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做到这一点?
答案 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);