【发布时间】:2009-10-07 21:06:34
【问题描述】:
我为某些任务编写了一个简单的地图实现。然后,出于好奇,我又写了两篇。我喜欢map1,但代码有点难读。如果有人有兴趣,我会很感激一个简单的代码审查。
哪个更好?你知道在javascript中实现这个的其他方法吗?
var map = function(arr, func) {
var newarr = [];
for (var i = 0; i < arr.length; i++) {
newarr[i] = func(arr[i]);
}
return newarr;
};
var map1 = function(arr, func) {
if (arr.length === 0) return [];
return [func(arr[0])].concat(funcmap(arr.slice(1), func));
};
var map2 = function(arr, func) {
var iter = function(result, i) {
if (i === arr.length) return result;
result.push(func(arr[i]));
return iter(result, i+1);
};
return iter([], 0);
};
谢谢!
编辑
我一般都在考虑这样的功能。
例如,现在我将使用它来进行这样的迭代:
map(['class1', 'class2', 'class3'], function(cls) {
el.removeClass(cls);
});
或
ids = map(elements, extract_id);
/* elements is a collection of html elements,
extract_id is a func that extracts id from innerHTML */
【问题讨论】:
-
Rob,风格更好。
-
奥斯卡,我一般都在考虑这样的功能。例如,现在我将使用它像这样进行迭代: map(['class1', 'class2', 'class3'], function(cls) { el.removeClass(cls); });或 ids = map(elements, extract_id); /* elements是html元素的集合,extract_id是从innerHTML中提取id的func */
-
我已将您的示例用法添加到主要问题中。 :)
标签: javascript map