我有一个数组:
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
替换为变量,只需将数据类型字符串作为键。
如何将实际字符串值作为键名放置?
答案 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;