推送到数组从变量中取出的键名

时间:2012-03-16 20:32:07

标签: javascript jquery html

我有一个数组:

var pages = new Array();

我想将我的页面数据推送到这个数组:

$('li.page').each(function () {
        var datatype = $(this).attr('data-type');
        var info = $(this).attr('data-info');
        pages_order.push({datatype:info});
    });

但是此代码不会将datatype替换为变量,只需将数据类型字符串作为键。 如何将实际字符串值作为键名放置?

5 个答案:

答案 0 :(得分:9)

我终于看到了你想要做的事情:

var pages = new Array();
$('li.page').each(function () {
    var datatype = $(this).attr('data-type');
    var info = $(this).attr('data-info');
    var temp = {};
    temp[datatype] = info;
    pages_order.push(temp);
});

答案 1 :(得分:2)

$('li.page').each(function () {

    //get type and info, then setup an object to push onto the array
    var datatype = $(this).attr('data-type'),
        info = $(this).attr('data-info'),
        obj  = {};

    //now set the index and the value for the object
    obj[datatype] = info;
    pages_order.push(obj);
});

请注意,您可以在变量声明之间添加逗号,而不是重用var关键字。

答案 2 :(得分:1)

看起来您只想为每个页面存储两条信息。您可以通过推送数组而不是对象来实现:

pages_order.push([datatype, info]);

答案 3 :(得分:1)

您必须在评估它的上下文中使用datatype

喜欢这样。

var pages = [];
$('li.page').each(function () {
    var datatype = $(this).attr('data-type'),
        info = $(this).attr('data-info'),
        record = {};
    record[datatype] = info;
    pages_order.push(record);
});

您只需要一个var,然后可以跟随,分隔的多个作业。

无需使用new Array只需使用数组文字[]

答案 4 :(得分:0)

您可以使用键添加以下单行来推送值:

pages_order.yourkey = value;