我正在準備這樣的陣列
datas[5] = { "qty_sized": "1", "resolution": "5", "status": "", "order": 1342 };
其中 [5] 是動態回應。
我有物件 mydata,里面有一個物件項。
我將陣列推送到物件專案,分配
Object.assign(mydatadata.items, datas);
現在 mydata.items 有一個陣列集,`
items{
1 {qty_auth: "", resolution: "4", status: "", order: "1495"},
5 {qty_sized: "1", resolution: "4", status: "", order: "1485"}
}`
現在,如果 qty_auth: "" ,我需要從中檢查 qty_ 是否為空,然后洗掉陣列。所以預期的輸出是這樣的: 注意:qty_ 在這里是動態的。
items{ 5 {qty_sized: "1", resolution: "4", status: "", order: "1485"} }
我想在同一個物件 mydata.items 內產生結果
我試過這樣的事情
const mydatadata.items = mydata.items.filter((o) =>
Object.keys(o).some((k) => k.startsWith("qty") && o[k])
);
console.log(result);
但它現在給了我任何輸出
uj5u.com熱心網友回復:
- 使用
Object#entries,獲取鍵值對items - 使用
Array#filter,迭代上述陣列 - 在每次迭代中,檢查當前項是否有一個以
qty_非空開頭的鍵。為此,您可以使用Object#keys,Array#some和String#startsWith。 - 使用
Object#fromEntries,將過濾后的對再次轉換為物件。
const obj = {
items: {
1: {qty_auth: "", resolution: "4", status: "", order: "1495"},
5: {qty_sized: "1", resolution: "4", status: "", order: "1485"}
}
};
obj.items = Object.fromEntries(
Object.entries(obj.items)
.filter(([_, item]) =>
Object.keys(item).some(key => key.startsWith('qty_') && item[key])
)
);
console.log(obj);
uj5u.com熱心網友回復:
你在談論一個陣列,但使用大括號而不是方括號。要使 filter() 作業,它必須看起來像:
mydata = {
items: [
{qty_auth: "", resolution: "4", status: "", order: "1495"},
{qty_sized: "1", resolution: "4", status: "", order: "1485"}
]
}
假設它是一個實際的陣列,那么“const mydatadata.items”仍然存在問題,或者至少它會為我拋出一個錯誤,因為 mydatadata 未初始化。除非它是一個錯字,它應該是 mydata,但是你會重新宣告它。所以取決于你想要什么:
mydata.items = mydata.items.filter((o) =>
Object.keys(o).some((k) => k.startsWith("qty") && o[k])
);
或者
let mydatadata = {};
mydatadata.items = mydata.items.filter((o) =>
Object.keys(o).some((k) => k.startsWith("qty") && o[k])
);
此外,您將結果存盤在 mydatadata 中,但您正在記錄變數結果。所以根據之前的答案:
console.log(mydatadata);
或者
console.log(mydata);
這是一個小提琴:https : //jsfiddle.net/b57qa82d/
uj5u.com熱心網友回復:
您可能應該只使用陣列而不是物件。當您不斷更改術語來描述資料時,您的問題并不清楚您需要什么結構。例如:“現在mydata.items有一個陣列集”但是你的代碼說它應該是帶有鍵的物件,而不是一個陣列。
所以我建議:將您的資料放入一個陣列中,并filter通過迭代每個物件的條目并檢查是否有任何以“qty”開頭的鍵具有非空字串的值。然后,您可以將該過濾后的陣列分配給myObject.items.
const data = [
{ "qty_sized": "0", "resolution": "5", "status": "", "order": 2 },
{ "qty_auth": "", "resolution": "5", "status": "", "order": 3 },
{ "qty_auth": "1", "resolution": "5", "status": "", "order": 1342 },
{ "qty_sized": "", "resolution": "2", "status": "", "order": 1 },
{ "qty_sized": "1", "resolution": "1", "status": "", "order": 142 }];
const filtered = data.filter(obj => {
return Object.entries(obj).find(([key, value]) => {
return key.startsWith('qty') && value;
});
});
const myObject = { items: filtered };
console.log(myObject);
附加檔案
Object.entriesfind
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/345362.html
標籤:javascript 数组 目的
上一篇:如何從一組資料項創建一個物件?
