我有以下循环结构,它遍历一个对象引用数组,为每个定义的对象做一些事情,并且应该打印出未定义对象的名称。
为此,我需要打印传递给迭代器的实际对象名称。
是否有任何运算符提供传递给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);
}
}
);
答案 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
});