2017-08-22 7 views
1

オブジェクト参照の配列に対して繰り返し処理を行い、定義済みオブジェクトごとに何かを行い、未定義の名前を出力する必要がありますオブジェクト。JS/Lodash/Nodejs:lodash foreachループ内で繰り返し実行される変数の名前

このため、イテレータに渡された実際のオブジェクト名を出力する必要があります。

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); 
     } 
    } 
); 

答えて

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 
}); 
+0

[OK]を-thanks-が、どのような場合には、このリストは動的である - ファイルから読み込まれたオブジェクトの動的配列は、何がある場合 - どのようにそれは、その場合には – BabyGroot

+0

@BabyGrootを動作します:あなたは何をそれらのオブジェクトに名前を付けるのでしょうか? – Ryan

+0

早めにゆるやかな質問をしてくれて申し訳ありません。努力してくれてありがとうございます。ありがとう! – BabyGroot

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 
}); 
+0

はい - 私の場合ではありませんが、オブジェクトは動的でプリロードされています。 – BabyGroot

+0

いずれかの方法でこのようにすることができないのをどのように尋ねることができますか?実際、このようにしない方が簡単でしょうか? – Shadow

+0

オブジェクト定義は、私は書くことができない静的に定義されない: VARオブジェクト= { :{...}、 B:{...}、 C:未定義、 D:{.. 。} } – BabyGroot

関連する問題