将循环转换为lodash _.forEach

时间:2015-09-22 19:48:12

标签: javascript for-loop lodash

我正试着转过来

        _.forEach(dataset, function(items) {
          _.forEach(items, function(item) {
            for (var key in item) {
              if (key.indexOf('XX') === 0) {
                var toJsonVar = item[key];
                parseString(toJsonVar, function(err, res) {
                  item[key] = res;
                });
              }
            }
          });
        });

你可能会看到我在前两个范围内有来自lodash的_.forEach,但在第三个范围内我有一个for in循环,我试图转换为lodash但是我收到一个错误。

            _.forEach(item, function(key)) {
              if (key.indexOf('XX') === 0) {
                var toJsonVar = item[key], toJsonRes;
                parseString(toJsonVar, function(err, res) {
                  item[key] = res;
                });
              });

我有尝试的方式,我做错了什么?

错误说

  

TypeError:undefined不是函数

并且错误行是

if (key.indexOf('XX') === 0) {

1 个答案:

答案 0 :(得分:4)

问题在于,当您使用for (var key in item) {时,key实际上是对象的,但是在lodash _.forEach中,第一个参数是对象中的。试试这个......

_.forEach(item, function(toJsonVar, key)) {
  if (key.indexOf('XX') === 0) {
     parseString(toJsonVar, function(err, res) {
       item[key] = res;
     });
  }
});

不再需要使用var toJsonVar = item[key]查找值,因为lodash已将其作为第一个参数传递给您的回调