jQuery map() 返回值竟然不是数组,怎么回事?
网友解答: 谢邀,不过您说的jQuery.map()方法返回值不是数组,应该是不正确的,您是按照什么方式判断返回的不是数组呢?如果有最好能截图或者把代码贴上来更有说服力。定义和用法$.m
谢邀,不过您说的jQuery.map()方法返回值不是数组,应该是不正确的,您是按照什么方式判断返回的不是数组呢?如果有最好能截图或者把代码贴上来更有说服力。
定义和用法$.map() 把每个元素通过函数传递到当前匹配集合中,生成包含返回值的新的 jQuery 对象,并将处理结果封装为新的数组返回。
注意:
1. 在jQuery 1.6 之前,该函数只支持遍历数组;从 1.6 开始,该函数也支持遍历对象。
2. map()还会为函数传入两个参数:其一是当前迭代的元素或属性值,其二是当前迭代项的数组索引或对象属性名。
3. 该函数返回值将作为结果数组中的一个元素,如果返回值为null或undefined,则不会被添加到结果数组中。
原型方法源码以下为网上搜集的一个牛人讲解的$.map()源码分析,我们只要看源码的最后就知道返回的是什么类型数据了。
原型方法map跟each类似调用的是同名静态方法,只不过返回来的数据必须经过另一个原型方法pushStack方法处理之后才返回。
ret.concat.apply( [], ret )等价于[].concat.apply([],ret)。
关键作用的是apply,因为apply的第二个参数把ret的数组分成多个参数传入给concat把二维数组转化为一维数组返回了。