2016-07-03 12 views
1

私はNW.jsを使用してサイドプロジェクトとしてIDEで作業していますが、フォーカスしたときにプロジェクトツリーに変更があるかどうかを検出する必要があります。NW.js:両方の配列が等しくない場合

私はJQuery's .eachを使用しています。プロジェクトフォルダ内のファイルがフォーカスされてから変更されているかどうかを確認しています。

ここで私はウィンドウフォーカス機能を持っています。

win.on("focus", function() { 
    var stringArray = []; 
    listFiles = fs.readdirSync(__dirname + "/content/project"); 
    console.log("checking if there's any changes"); 
    $.each($("[data-nme]"), function() { 
    stringArray.push(this.textContent); 
    }); 
    var array1 = listFiles; 
    var array2 = JSON.stringify(stringArray); 

    console.log(array1); 
    console.log(array2); 

    if (array1.toString() != array2.toString()) { 
    console.log("there's been a change"); 
    } 
}); 

私がデバッグすると、次の結果が得られます。

enter image description here

それはそれはまったく同じだ配列との違いがあると言う理由を私は理解していません。

答えて

1

エラーは、平等をチェックする方法にあります。配列の1つはJSON.stringされ、もう一方は配列されません。 JSON.stringify(stringArray)を使用してarray2を定義しないでください。

var foo = ["bar"]; 
foo.toString(); 

出力:"foo"

JSON.stringify(foo).toString() 

出力:"["foo"]"この条件は、作業する必要があり

(テストしていません):

if (array1.toString() != stringArray.toString()) { 
    console.log("there's been a change"); 
    } 

あなたはへの最良の選択肢をしたい場合配列を比較すると、次のようになります。 How to compare arrays in JavaScript?

関連する問題