无法在数组中获取对象

时间:2016-07-01 03:30:21

标签: javascript arrays

我一直在尝试使用JavaScript数组按标头推送我的对象 像这样:

var tab_temp = new Y.TabView(
  { srcNode: '#' + tabId }
);
tabsArray['"' + type + "_" + subTypes + '"'] = tab_temp;

让我们type = "x"subTypes = "y",所以当我写下这样的内容时,我期待这个对象:

tabs["x_y"]

但这有问题。当我调试时,我可以看到这个数组将保存一个对象"x_y",但数组的长度为0

enter image description here

我也不能使用push,因为这样我需要使用index来取回它,但由于序列可能会改变,因此很难。

编辑1:

我正在使用它,因为我想要保存几个TabView对象。否则我无法在创建后访问这些对象。 (AlloyUI)。我能够将这些对象推入数组中。如您所见"Baru_BARANG"包含和以s

开头的对象

编辑2:

感谢您的帮助,我修复了它。我使用Object代替Array

var tabs = {}
tabs[x + "_" + y] = "z";

我按tabs[x + "_" + y]

获取值

2 个答案:

答案 0 :(得分:1)

您最有可能将tabsArray实例化为数组,即var tabsArray = [];。这导致观察到的行为。

由于您想自己定义密钥,您应该将其实例化为对象:

var tabsArray = {};
tabsArray['x_y'] = 'z';

More about working with objects in JavaScript.

答案 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);