[英]Recursively adding and removing values from javascript object
因此,我正在使用來自API的數據在React中構建基本的方面搜索,但是我正努力從發送回服務器的有效負載中添加和刪除值。 有效負載對象可以包含數組,對象和字符串。 所以說我有一個有效載荷結構,如下所示:
payload = {
search_query: ""
topic: [],
genre: [],
rating: "",
type: {}
}
使用deepmerge,我可以將多個值傳遞回API,而API可以正常工作,因此示例有效負載將是...
payload = {
search_query: "Luther"
topic: ["9832748273", "4823794872394"],
genre: ["3827487483", "3287483274873"],
rating: "18",
type: {
args: {
when: "today",
min: 15
},
name: "spot"
}
}
到目前為止,一切順利,我得到了預期的結果。 現在,我在構面上進行了切換,以將其從有效負載中刪除,這會將值發送回函數以從有效負載中刪除。 例如:
清除搜索,要刪除的值=“ Luther”
切換主題,要刪除的值=“ 9832748273”
類型的切換,要刪除的值=“ 3827487483”
切換等級,要刪除的值=“ 18”
類型的切換,要刪除的值= { args: { when: "today", min: 15}, name: "spot"}
搜索和評分將返回空字符串,主題和體裁將刪除數組中的項目,類型將返回空對象。
這可以刪除數組值,但是感覺很臟,我想要一種干凈的方法來處理所有類型!
const removeObjValue = (obj, filterValue) => {
Object.entries(obj).forEach(([key, value]) => {
Object.entries(value).forEach(([subKey, subValue]) => {
if(subvalue === filterValue) {
if(Array.isArray(value)) {
const index = value.indexOf(subvalue);
if (index > -1) {
value.splice(index, 1);
}
}
}
});
});
return obj;
}
我只是使用delete
關鍵字刪除對象屬性,像這樣
if (payload[key]) {
if (payload[key] instanceof Array) {
var idx = payload[key].indexOf(value);
if (idx > -1) payload[key].splice(idx, 1);
} else {
delete payload[key];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.