为my_var分配给map()函数时,为什么typeof my_var返回undefined?

时间:2014-02-01 07:24:31

标签: jquery map

我发现了这篇文章:

jQuery get img source attributes from list and push into array

其中介绍了map()功能。

说我通过以下方式获取多张图片的图片src

var $img_sources_array = $(".my_class img").map(function() {
return $(this).attr("src");
});

当我在Firebug控制台中使用typeof $img_sources_array时,我得到“未定义”。

但如果我这样做:

$.each($img_sources_array, function (obj,v) {
alert(v);
});

然后显示每个图像源。

问题

那么$img_sources_array的类型是什么,它看起来是什么样的,以及如何从控制台访问其值?

上下文

我正在尝试理解返回的结构,以便我可以构建多维数组,我可以添加和访问srcclass,如下所示:

var my_object_array = [];

var $img_properties_array_2 = $(".image_container img").map(function() {
var img_src = $(this).attr("src");
var img_class = $(this).attr("class");
var my_object = {};
my_object.img_src = img_src;
my_object.img_class = img_class;
my_object_array.push(my_object);
});

console.log(my_object_array[0].img_class); // this works, type fixed in array name

的jsfiddle

http://jsfiddle.net/rwone/tD9eh/7/

编辑:关于问题的第二部分,以下内容将返回我之后的内容:

// container for multidimensional arrays
var my_object_array = [];

var $img_properties_array_2 = $(".image_container img").map(function() {
var img_src = $(this).attr("src");
var img_class = $(this).attr("class");
var my_object = {};
my_object.img_src = img_src;
my_object.img_class = img_class;
my_object_array.push(my_object);
}); 

$.each(my_object_array, function (obj,v) {
console.log('image source: ' + v.img_src);
console.log('image class: ' + v.img_class);
});

1 个答案:

答案 0 :(得分:1)

.map()只对返回的值/对象进行分组,此外,您必须使用.get()将其转换为数组。

尝试,

var my_object_array = $(".image_container img").map(function() {
   var img_src = $(this).attr("src");
   var img_class = $(this).attr("class");
   var my_object = {};
   my_object.img_src = img_src;
   my_object.img_class = img_class;
   return my_object;
}).get();

DEMO