Javascript 在Jquery中创建一个多数组,给出错误
我想使用jQuery创建一个数组。这是一个多维数组。请检查下面写的代码Javascript 在Jquery中创建一个多数组,给出错误,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,我想使用jQuery创建一个数组。这是一个多维数组。请检查下面写的代码 GiftData = []; GiftData['boxProduct'] = []; GiftData['boxName'] = jQuery('#giftbox-data .box-data').text(); jQuery('#giftbox-data .prod-data .product').each( function(i) { GiftData['boxProduct'][i]['name'] = jQue
GiftData = [];
GiftData['boxProduct'] = [];
GiftData['boxName'] = jQuery('#giftbox-data .box-data').text();
jQuery('#giftbox-data .prod-data .product').each( function(i) {
GiftData['boxProduct'][i]['name'] = jQuery(this).find('.prod-name').text();
GiftData['boxProduct'][i]['num'] = jQuery(this).find('.prod-num').text();
})
这给了我一个错误:
未捕获的TypeError:无法设置未定义的属性“name”
如何存储数据?请帮助我并提前感谢。您需要先将数组中的每个项初始化为一个对象:
GiftData["boxProduct"][i] = {};
GiftData["boxProduct"][i]['name'] = jQuery(this).find('.prod-name').text();
GiftData["boxProduct"][i]['num'] = jQuery(this).find('.prod-num').text();
首先,
GiftData
是一个数组,因此不能将其中的命名属性设置为GiftData['boxProduct']=[]代码>尝试执行的操作。要使其正常工作,GiftData
必须是一个对象
其次,在设置对象的属性之前,需要在GiftData[“boxProduct”][i]
中定义对象:
GiftData = {};
GiftData['boxProduct'] = [];
GiftData['boxName'] = jQuery('#giftbox-data .box-data').text();
$('#giftbox-data .prod-data .product').each( function(i) {
GiftData["boxProduct"][i] = {};
GiftData['boxProduct'][i]['name'] = jQuery(this).find('.prod-name').text();
GiftData['boxProduct'][i]['num'] = jQuery(this).find('.prod-num').text();
});
也就是说,通过连接对象定义和属性设置器,这可以变得更加简洁:
GiftData = {
boxProduct: [],
boxName: $('#giftbox-data .box-data').text();
};
$('#giftbox-data .prod-data .product').each( function(i) {
GiftData["boxProduct"][i] = {
name: $(this).find('.prod-name').text();
num: $(this).find('.prod-num').text();
};
});
更进一步,您可以使用map()
而不是each()
来构建阵列:
GiftData = {
boxName: $('#giftbox-data .box-data').text(),
boxProduct = $('#giftbox-data .prod-data .product').map(function() {
return {
name: $(this).find('.prod-name').text();
num: $(this).find('.prod-num').text();
};
}).get()
};
由于“一切都是对象”,我想从技术上讲,您可以设置一个命名道具并将其指向另一个数组,但如果我没有遗漏某些内容,那么它就没有多大意义。没问题@Ranjit,如果我的答案解决了您的问题,请单击我答案左侧的灰色勾号,将其标记为已接受。