我想拥有数组数组。
我的代码:
image_data = $('.post-entry').map(function() {
return $(this).find('img').map(function() {
var self = $(this);
return {
big: self.hasClass('big') || self.hasClass('medium'),
offset: self.offset(),
width: self.width(),
height: self.height()
};
}).get();
}).get();
但是当我有两个后置元素并且每个有4个图像时,我有8个图像的数组。如何获得每个包含4个元素的两个元素的数组?为什么我得到扁平阵列?
答案 0 :(得分:6)
那是因为map()的文档说(强调我的):
该函数可以返回单个数据项或数据数组 要插入到结果集中的项。 如果返回一个数组, 数组中的元素将插入到集合。
中
因此,map()
会使您返回的数组变平,这种行为是设计使然。
尝试将这些数组包装到另一个数组中,因为我相信map()
只会展平一次:
image_data = $('.post-entry').map(function() {
return [
$(this).find('img').map(function() {
var self = $(this);
return {
big: self.hasClass('big') || self.hasClass('medium'),
offset: self.offset(),
width: self.width(),
height: self.height()
};
}).get()
];
}).get();
答案 1 :(得分:2)
您可以创建一个空数组,然后为包含post-entry
个对象的每个img
添加一个索引。我怀疑可能有更好的方法来做到这一点:
var image_data = [];
$('.post-entry').each(function(i) {
image_data[i] = $(this).find('img').map(function() {
var self = $(this);
return {
big: self.hasClass('big') || self.hasClass('medium'),
offset: self.offset(),
width: self.width(),
height: self.height()
};
}).get();
});