JS / Lodash / Nodejs:打印在lodash foreach循环中迭代的变量名称

时间:2017-08-22 04:52:40

标签: javascript node.js lodash

我有以下循环结构,它遍历一个对象引用数组,为每个定义的对象做一些事情,并且应该打印出未定义对象的名称。

为此,我需要打印传递给迭代器的实际对象名称。

是否有任何运算符提供传递给iteratee函数的参数名称?

 //couple of objects with some data
    var a = { .... };
    var b = { .... };
    //undefined object
    var c;
    var d;    
    var e;
   .
   .
   .
   .
   var someNthVar;

_.forEach (
    [a,b,c,d,e,....],
    function (obj) {
         if (obj) {
             //do something
         } else {             
             //PROBLEM!!! How do i specify that variable 'c' is the one that is undefined
             //log undefined variables
             console.log('Undefined variable: ' + obj.variableName);
         }
    }
);

2 个答案:

答案 0 :(得分:4)

  

是否有任何运算符提供传递给iteratee函数的参数名称?

没有。您可以定义名称列表并按索引关联它们:

const names = ['a', 'b', 'c'];

[a, b, c].forEach((obj, i) => {
    if (!obj) {
        throw new Error(`${names[i]} missing a value`);
    }

    // do something
});

答案 1 :(得分:0)

您是否考虑过使用javascript对象来保存您的值?

通过这种方式,您可以使用类似的forIn;

来编写类似下面的内容
var objects = {
    a: {...},
    b: {...},
    c: undefined,
    d: {...}
}

_.forIn(objects, function(value, name){
    if (!value) {
        throw new Error(`${name} is missing a value`);
    }
    // Do something
});