我有一個陣列
Array [
"2022-03-25",
"2022-03-10",
"2022-03-24",
"2022-03-31",
"2022-03-12",
"2022-03-23",
"2022-03-22",
"2022-03-16",
"2022-03-11",
"2022-03-26",
]
我有物件的資料:
Object {
"2022-03-10": Object {
"marked": true,
},
"2022-03-11": Object {
"marked": true,
},
"2022-03-12": Object {
"marked": true,
},
"2022-03-16": Object {
"marked": true,
},
"2022-03-18": Object {
"marked": true,
},
"2022-03-22": Object {
"marked": true,
},
"2022-03-23": Object {
"marked": true,
},
"2022-03-24": Object {
"marked": true,
},
"2022-03-25": Object {
"marked": true,
},
"2022-03-26": Object {
"marked": true,
},
"2022-03-27": Object {
"marked": true,
},
"2022-03-31": Object {
"marked": true,
},
}
在物件中,有一個日期“2022-03-27”,但它不在陣列中。我想做的是,如果日期不在 ARRAY 中,我想將其從物件中洗掉,或將其標記為 false。
uj5u.com熱心網友回復:
為了避免改變原始物件,您可以使用Object.fromEntries傳遞原始物件的過濾器Object.entries。這里簡單地使用filter()和測驗使用includes().
const array = ["2022-03-25", "2022-03-10", "2022-03-24", "2022-03-31", "2022-03-12", "2022-03-23", "2022-03-22", "2022-03-16", "2022-03-11", "2022-03-26",];
const object = { "2022-03-10": { "marked": true, }, "2022-03-11": { "marked": true, }, "2022-03-12": { "marked": true, }, "2022-03-16": { "marked": true, }, "2022-03-18": { "marked": true, }, "2022-03-22": { "marked": true, }, "2022-03-23": { "marked": true, }, "2022-03-24": { "marked": true, }, "2022-03-25": { "marked": true, }, "2022-03-26": { "marked": true, }, "2022-03-27": { "marked": true, }, "2022-03-31": { "marked": true, }, };
const filteredObject = Object.fromEntries(
Object.entries(object)
.filter(([key]) => array.includes(key))
);
console.log(filteredObject);
要切換marked每個嵌套物件的屬性,您可以使用類似的方法,但filter()您可以使用擴展語法來克隆每個嵌套物件并使用與前一個示例相同的呼叫結果覆寫屬性,而不是使用map()原始方法。Object.entriesmarkedincludes()
const array = ["2022-03-25", "2022-03-10", "2022-03-24", "2022-03-31", "2022-03-12", "2022-03-23", "2022-03-22", "2022-03-16", "2022-03-11", "2022-03-26",];
const object = { "2022-03-10": { "marked": true, }, "2022-03-11": { "marked": true, }, "2022-03-12": { "marked": true, }, "2022-03-16": { "marked": true, }, "2022-03-18": { "marked": true, }, "2022-03-22": { "marked": true, }, "2022-03-23": { "marked": true, }, "2022-03-24": { "marked": true, }, "2022-03-25": { "marked": true, }, "2022-03-26": { "marked": true, }, "2022-03-27": { "marked": true, }, "2022-03-31": { "marked": true, }, };
const markedObject = Object.fromEntries(
Object.entries(object)
.map(([key, value]) => [key, { ...value, marked: array.includes(key) }])
);
console.log(markedObject);
uj5u.com熱心網友回復:
我正在獲取物件的所有鍵,然后遍歷集合并marked根據日期是否包含在陣列中更新屬性。
假設:objects物件被用來跟蹤狀態,因此它是可變的。
let dates = [ "2022-03-25", "2022-03-10", "2022-03-24", "2022-03-31", "2022-03-12",
"2022-03-23", "2022-03-22", "2022-03-16", "2022-03-11", "2022-03-26" ]
let objects = { "2022-03-10": { marked: true }, "2022-03-11": { marked: true },
"2022-03-12": { marked: true }, "2022-03-16": { marked: true },
"2022-03-18": { marked: true }, "2022-03-22": { marked: true },
"2022-03-23": { marked: true }, "2022-03-24": { marked: true },
"2022-03-25": { marked: true }, "2022-03-26": { marked: true },
"2022-03-27": { marked: true }, "2022-03-31": { marked: true }
}
keySet = Object.keys(objects)
keySet.forEach( key => objects[ key ].marked = dates.includes(key) )
console.log(objects)
為了避免更新沒有有意義更改的物件,您可以這樣做:
Object.keys(objects).filter(date => !dates.includes(date)).map( date => objects[ date ].marked = false )
console.log(objects)
uj5u.com熱心網友回復:
遍歷物件鍵,查找鍵是否存在于陣列中,如果不存在則從物件中洗掉:
Object.keys(obj).forEach(function(key) {
if (arr.includes(key) === false) {
delete obj[key];
}
});
uj5u.com熱心網友回復:
您可以使用該Array.prototype.includes()方法。只需從您的物件中提取值并使用條件陳述句。
if array.includes(yourObjectDate) {
return true
} else {
return false
}
uj5u.com熱心網友回復:
for (const property in object) {
array.find(date => object[property].marked = date === property);
}
uj5u.com熱心網友回復:
Here's how to remove the object whose date is not in dates:
let dates = [ "2022-03-25", "2022-03-10", "2022-03-24", "2022-03-31", "2022-03-12", "2022-03-23", "2022-03-22", "2022-03-16", "2022-03-11", "2022-03-26" ];
let objects = { "2022-03-10": { marked: true }, "2022-03-11": { marked: true }, "2022-03-12": { marked: true }, "2022-03-16": { marked: true }, "2022-03-18": { marked: true }, "2022-03-22": { marked: true }, "2022-03-23": { marked: true }, "2022-03-24": { marked: true }, "2022-03-25": { marked: true }, "2022-03-26": { marked: true }, "2022-03-27": { marked: true }, "2022-03-31": { marked: true } };
Object.keys(objects).forEach(
key => dates.includes(key) || delete objects[key]
);
console.log(objects)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/453644.html
標籤:javascript 数组 反应式 目的
