這是怎么回事。我有 4 個物件。物件A,物件B,物件C,物件D。
objD,具有多個屬性,在它們之間,objA、objB 和 objC。
class objD{
constructor(objA, objB, objC, otherAttributes...){
this.objA = objA;
this.objB = objB;
this.objC = objC;
this.otherAttributes = otherAttributes;
...
}
}
對于每個 objAs、Bs、Cs 以及 objD,我都有一個 Map()。
但是,我必須只過濾 objDs 中使用的 objAs、Bs 和 Cs。畢竟,并不是所有的 objAs、Bs 和 Cs 都被使用了,所以在我的選項中顯示它們是沒有意義的。
所以,我想要實作的目標:在一次迭代中從使用的 objAs、objB 和 objC 中獲得 3 個集合。當然,我可以迭代 3 次 ObjDs 的地圖。但我想在一次迭代中做到這一點。
這是我到目前為止所做的:
以做一組 objAs 為例:
let mapOfObjDs; //this is the map containing all the objDs.
let setOfObjAs = new Set(Array.from(mapOfObjDs.values(), (x) => x.objA))
我設法得到一個陣列 3 xn(n 是 objD 的數量):
let map = Array.from(mapOfObjDs.values()).map((x) =>
[
x.objA,
x.objB,
x.objC
]);
但我不知道如何在不迭代 3 次的情況下將其轉換為 3 組。是否有可能在一次迭代中做到這一點?
uj5u.com熱心網友回復:
您可以創建一個集合陣列并迭代mapOfObjDs插入每個值。
例如:
// Map of objects
let mapOfObjDs = new Map([
["1", new objD("a1","b1","c1")],
["2", new objD("a2","b2","c2")],
["3", new objD("a3","b3","c3")],
["4", new objD("a4","b4","c4")]
]);
// Create empty array of set
let arrOfObjs = Array.from({length: 3}, (e) => new Set());
// Insert values
for (const objd of mapOfObjDs.values()) {
arrOfObjs[0].add(objd.objA);
arrOfObjs[1].add(objd.objB);
arrOfObjs[2].add(objd.objC);
}
console.log(arrOfObjs);
輸出:
[
Set(4) { 'a1', 'a2', 'a3', 'a4' },
Set(4) { 'b1', 'b2', 'b3', 'b4' },
Set(4) { 'c1', 'c2', 'c3', 'c4' }
]
uj5u.com熱心網友回復:
像這樣的東西?
class objD{
alldata = {
A: new Set(),
B: new Set(),
C: new Set()
}
constructor(objA, objB, objC, otherAttributes...){
this.objA = objA;
this.objB = objB;
this.objC = objC;
this.otherAttributes = otherAttributes;
alldata.A.add(objA);
alldata.B.add(objB);
alldata.C.add(objC);
}
}
然后稍后您可以通過objD.alldata.Aetc訪問串列
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/512789.html
上一篇:我必須在php中將xml檔案轉換為csv,但它必須具有特定外觀的輸出
下一篇:有條件地使用來自同一物件的屬性
