如何使用lodash _.forEach实现.forEach本机?

时间:2014-01-31 05:11:41

标签: javascript lodash

我有以下内容:

var new = {};
old.forEach(function (u) { new[u.id] = u.name; });

有人可以向我解释如何使用lodash附带的_.forEach实现此目的。

1 个答案:

答案 0 :(得分:1)

  

我认为lodash总是产生一个输出,我将不得不使用它。

不,这实际上取决于功能。 _.forEach只是迭代集合的元素。即使它 返回一个值,它也只是你作为第一个参数传递的集合。

  

所以我认为它更像是:var new = _.foreach( ..有没有办法做到这一点,还是我总是需要做new[u.id}

您可以使用_.reduce,但我个人认为它不比您的版本更具可读性,因为其意图并不明确:

var newObj = _.reduce(old, function(obj, v) {
    obj[v.id] = v.name;
    return obj; // or in one line: return  obj[v.id] = v.name, obj;
}, {});

理想情况下,你会使用类似_.map的东西,这样可以使意图更加清晰,但是你不能将数组从一个数组映射到一般的对象,并且你不能使用lodash从一个对象映射到一个对象(因为它似乎)。