![](/img/trans.png)
[英]How can I loop through an array object and check each element to see if one is defined?
[英]How can I see if my object updates in a loop?
我希望此代碼檢查“狀態”object 中的一個鍵是否從 false 更新為 true,如果是,則在 if 語句中運行代碼。 出於某種原因,即使我手動更新狀態變量(就像我在這里所做的那樣)。 代碼永遠不會運行。
我正在使用“compareMe”變量來保存“狀態”object 的最新版本,方法是在循環結束時將其設置為等於“狀態”object。
我敢肯定這不是最好的方法,任何想法都會有很大幫助。
function sleep(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms * 1000)
})
}
var states = { Dad: false, Mom: false, Brother: false, Sister: true }
var compareMe = {}
var loop = 0;
(async () => {
while(true) {
loop++
if (loop === 5) {
states.Dad = true
}
for (const key of Object.keys(states)) {
if(compareMe[key] === false && states[key] === true) {
console.log("Opening Door")
} else {
console.log('No change')
}
}
compareMe = states;
await sleep(5)
}
})();
你用compareMe = states
做的是在同一個 object 上創建一個新的引用,所以每當你改變states
時,改變都會反映在compareMe
上。
您應該改為執行克隆:
compareMe = { ...states };
您可以使用代理 object 來監視您的 object 的變化。
var targetObj = {}; var targetProxy = new Proxy(targetObj, { set: function (target, key, value) { // function called console.log(`${key} set to ${value}`); target[key] = value; return true; } }); targetProxy.newProp = "test"; // console: 'newProp set to test'
但是,僅使用庫來監視和觀察變量對您來說會更容易。 有很多庫和框架可以做到這一點。 庫: Obseravble-Slim框架:Angular
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.