我知道这map()
是要迭代列表,在每个成员上运行一个函数,然后返回(或不返回)一个值作为列表项。但是,如果我以与我相同的方式使用它,该forEach()
怎么办?
例子:
var stuff = [1, 2, 3];
var newStuff = {};
var moreStuff = [];
stuff.forEach(function(value, key){
newStuff[value] = {'value' : value};
moreStuff.push({'other_stuff': value});
});
$('body').append('<div>1. ' + JSON.stringify(newStuff) + '/' + JSON.stringify(moreStuff) + '</div>');
//vs.
newStuff = {};
moreStuff = [];
stuff.map(function(value, key){
newStuff[value] = {'value' : value};
moreStuff.push({'other_stuff': value});
});
$('body').append('<div>2. ' + JSON.stringify(newStuff) + '/' + JSON.stringify(moreStuff) + '</div>');
结果...
1. {"1":{"value":1},"2":{"value":2},"3":{"value":3}}/[{"other_stuff":1},{"other_stuff":2},{"other_stuff":3}]
2. {"1":{"value":1},"2":{"value":2},"3":{"value":3}}/[{"other_stuff":1},{"other_stuff":2},{"other_stuff":3}]
https://jsfiddle.net/0n7ynvmo/
我很确定,异步注意事项是相同的(并且可能使这个示例失败),结果是相同的,但是为了讨论最佳实践,一种方式与另一种方式的弊端是什么?在map()
方法中更改先前作用域变量而不实际返回任何内容是否滥用方法?正确的答案是否只是裁量问题?
没有太多缺点-除了forEach
您不返回新列表之外。但是,根据您的情况,您需要一个新列表,因此请使用.map
var newStuff = {};
moreStuff = stuff.map(function(value, key){
newStuff[value] = {'value' : value};
return {'other_stuff': value};
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句