动态访问Javascript数组

时间:2013-11-24 21:16:47

标签: javascript jquery arrays variables

此代码正在读取数组名称的第一个字母,但我希望它读取该数组中的第一个对象。 它应该读取一个元素数组属性(它做)然后访问该数组中的第一个东西。 这是我第一次使用数组,所以这可能是一个非常愚蠢的问题:)

谢谢你。

//array of strategies
//leads
var leads = new Array();
leads[0] = "Test 1";
leads[1] = "Test 2";
leads[2] = "Test 3";

$("button").click(function () {
    //get category
    var currentCat = $(this).attr("array");
    $("#danWell h1").text($(this).attr('id')); //don't worry about this line
    $("#danWellContent").text(currentCat[0]);
})

2 个答案:

答案 0 :(得分:1)

看起来您希望将数组存储为元素的属性之一。我建议您使用.data()而不是属性来读取和写入数组值。这可以防止您添加多余的属性,并允许您使用正确的类型检索数据。

存储数组($ele引用jQuery元素):

var array = [];
array[0] = "Test";
array[1] = "Test";
$ele.data("array", array);

要检索数组:

var array = $ele.data("array");

如果您将数组存储为元素的data-array属性,则上面的.data()调用的工作方式完全相同。

答案 1 :(得分:1)

我猜你的问题是你有一个从属性中检索到的字符串,并且你想要使用该名称访问javascript中的变量。这通常通过使用object[varName]来完成,其中varName是一个javascript变量,这使您可以访问该变量中名称帮助对象的属性。

如果要访问的变量是全局变量,则可以通过索引window对象来通过字符串访问它,因为所有全局变量都是window对象的属性:

var currentCat = $(this).attr("array");
var item = window[currentCat][0];

如果您要访问的变量不是全局变量,那么您需要将其作为某个已知对象的属性,以便您可以使用相同的技术。

var myObject = {};
myObject.leads = [];
myObject.leads[0] = "Test 1";
myObject.leads[1] = "Test 2";
myObject.leads[2] = "Test 3";

var currentCat = $(this).attr("array");
var item = myObject[currentCat][0];

仅供参考,在HTML中存储自定义属性的推荐方法是使用"data-"为自定义属性添加前缀,然后您可以使用jQuery的.data()来检索自定义属性,并且您还可以兼容自定义属性的HTML5规范。

<div data-array="leads">

var currentCat = $(this).data("array");