アンダースコアを使用することに満足している場合は、次から始めることでそれを実行できます。
var hashes = [{"one": 1}, {"two": 2}];
var changed = _.map(hashes, function(hash){
if(hash.one) {
hash["new"] = "new";
return hash
}
return hash;
});
フィルター関数を渡して if ステートメントをカプセル化し、別の関数を渡して変更をハッシュにカプセル化することで、少し一般化できます。
編集ハッシュで何を探すべきかを一般化したい場合、これはうまくいくかもしれません:
var hashes = [{"one": 1}, {"two": 2}];
var isOne = function(hash) {
return hash.one;
}
var addNew = function(hash) {
hash["new"] = "new";
return hash;
}
var hashChanger = function(filter, editor) {
return function(hash) {
if(filter(hash)) {
return editor(hash);
}
return hash;
}
}
var changed = _.map(hashes, hashChanger(isOne, addNew));