注意:我只是想了解$ .map在以下代码中做什么。
我正在开发openstack,在其中一个javascript文件中他们使用$ .map函数请参阅horizon.d3linechar.js
我的问题是$ .map是如何工作的,在map之前是$。 $ .map与javascript或jquery相关联。
$.map(self.series, function(serie) {
serie.color = last_point_color = self.color(serie.name);
$.map(serie.data, function(statistic) {
// need to parse each date
statistic.x = d3.time.format.utc('%Y-%m-%dT%H:%M:%S').parse(statistic.x);
statistic.x = statistic.x.getTime() / 1000;
last_point = statistic;
last_point.color = serie.color;
});
});
答案 0 :(得分:1)
请阅读jQuery文档。他们有很多例子。我们的民众真的想帮助你。但是你在$.map()
函数中缺乏理解是什么?
$
只是名称空间,至少使地图功能起作用。所以忘了它。
map( input, outputFunction )
正在迭代必须是真实数组的input
。 outputFunction
,通常是一个自执行函数,能够操纵输入数组中每个元素的内容。
在您的示例中:
$.map(self.series, function(serie) {
self.series
是输入,该数组的每个元素将在匿名或相当自执行的函数中被称为serie
。
serie.color = last_point_color = self.color(serie.name);
更改一些颜色......
$.map(serie.data, function(statistic) {
下一次调用映射函数。
// need to parse each date
statistic.x = d3.time.format.utc('%Y-%m-%dT%H:%M:%S').parse(statistic.x);
将日期解析为评论中描述的特定格式。
statistic.x = statistic.x.getTime() / 1000;
将x
值解析为时间或可能为秒,然后除以1000。
last_point = statistic;
将serie.data
的元素保存到临时变量。
last_point.color = serie.color;
将系列的颜色保存到该系列的元素。
});
});
总而言之......
... $.map()
遍历self.series
,然后遍历其子项,然后看起来它会将每个元素的颜色更改为该系列的颜色。
答案 1 :(得分:0)
$
是jQuery
对象的别名。
至于map(),jQuery
中的 api 函数用于转换数组中的项目。
如果查看地图的source,基本算法是迭代传入的elems
并使用回调获得转换后的值
function (elems, callback) {
var value, i = 0,
length = elems.length,
ret = [];
for (; i < length; i++) {
//alternatively, for objects, for (i in elems) {
value = callback(elems[i], i);
if (value != null) {
ret.push(value);
}
}
// Flatten any nested arrays
return concat.apply([], ret);
}