我一直在尝试使用JavaScript数组按标头推送我的对象 像这样:
var tab_temp = new Y.TabView(
{ srcNode: '#' + tabId }
);
tabsArray['"' + type + "_" + subTypes + '"'] = tab_temp;
让我们type = "x"
和subTypes = "y"
,所以当我写下这样的内容时,我期待这个对象:
tabs["x_y"]
但这有问题。当我调试时,我可以看到这个数组将保存一个对象"x_y"
,但数组的长度为0
我也不能使用push,因为这样我需要使用index来取回它,但由于序列可能会改变,因此很难。
编辑1:
我正在使用它,因为我想要保存几个TabView对象。否则我无法在创建后访问这些对象。 (AlloyUI)。我能够将这些对象推入数组中。如您所见"Baru_BARANG"
包含和以s
编辑2:
感谢您的帮助,我修复了它。我使用Object
代替Array
:
var tabs = {}
tabs[x + "_" + y] = "z";
我按tabs[x + "_" + y]
答案 0 :(得分:1)
您最有可能将tabsArray
实例化为数组,即var tabsArray = [];
。这导致观察到的行为。
由于您想自己定义密钥,您应该将其实例化为对象:
var tabsArray = {};
tabsArray['x_y'] = 'z';
答案 1 :(得分:1)
您真的需要阅读有关在JavaScript中使用对象的更多信息。
首先尝试here。
var type = "x";
var subType = "y";
var tabsArray = {};
tabsArray[type + "_" + subType] = "z";
console.log("tabsArray = ");
console.log(tabsArray);
console.log("tabsArray['x_y'] = " + tabsArray["x_y"]); // output: z
// Including code added to question as a comment:
var tabsArray = [];
var x = "x";
var y = "y";
tabsArray[x + "_" + y] = "z";
console.log("tabsArray['x_y'] = " + tabsArray["x_y"]);
// tabsArray.length will still be 0. To set .length you can use:
for (var i = 0; i < tabsArray.length; i++) {
tabsArray.length = ++i;
};
console.log("tabsArray.length = " + tabsArray.length);