我使用NW.js作为辅助项目在IDE上工作,我需要检测在关注时是否对项目树进行了任何更改。
我使用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");
}
});
当我调试时,我得到以下结果。
我不明白为什么它与阵列的区别在于它完全相同。
if (array1.toString() != array2.toString()) {
console.log("there's been a change");
}
答案 0 :(得分:1)
错误与检查相等性的方式有关。其中一个数组是JSON.stringified,另一个不是。不要使用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?