NW.js:如果两个数组相等则不工作
NW.js: If both arrays are equal not working
我正在使用 NW.js 将 IDE 作为一个副项目,我需要检测在聚焦时我的项目树是否有任何变化。
我正在使用 JQuery's .each 检查项目文件夹中的文件在获得焦点后是否发生了变化。
这是我所拥有的 window 重点功能。
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");
}
错误在于您检查相等性的方式。其中一个数组是 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?
我正在使用 NW.js 将 IDE 作为一个副项目,我需要检测在聚焦时我的项目树是否有任何变化。
我正在使用 JQuery's .each 检查项目文件夹中的文件在获得焦点后是否发生了变化。
这是我所拥有的 window 重点功能。
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");
}
错误在于您检查相等性的方式。其中一个数组是 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?