[英]Why is only my last object being updated in loop in object
我有兩個對象,一個是一個看起來像這樣的數組:
let value = [123,500];
另一個是一個看起來像這樣的對象數組:
let mapObject = [
{id:123,name:"Thing 1"},
{id:444,name:"Thing 2"},
{id:500,name:"Thing 3"},
{id:777,name:"Thing 4"}
];
next 函數的目標是迭代 mapObject,如果 id 與值中的任何元素匹配,則將名為“on”的新屬性設置為 true,否則將其設置為 false。 這是代碼:
for (let i in mapObject) {
for (let j in value) {
if (mapObject[i].id == value[j]) {
mapObject[i].on = true;
} else {
mapObject[i].on = false;
}
}
}
我期望的是:
[
{id:123,name:"Thing 1",on:true},
{id:444,name:"Thing 2",on:false},
{id:500,name:"Thing 3",on:true},
{id:777,name:"Thing 4",on:false}
]
然而,我實際上得到的是這樣的:
[
{id:123,name:"Thing 1",on:false},
{id:444,name:"Thing 2",on:false},
{id:500,name:"Thing 3",on:true},
{id:777,name:"Thing 4",on:false}
]
為什么會發生這種情況?
你的循環邏輯不好。 將值更新為 true 后,您應該中斷內部循環。
for (let i in mapObject) {
for (let j in value) {
if (mapObject[i].id == value[j]) {
mapObject[i].on = true;
break;
} else {
mapObject[i].on = false;
}
}
}
問題是,一旦您將值更新為true
您將再次使用相同的mapObject[i].id
循環,並針對value[j]
中的新值對其進行測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.