我在getClusterByName()函式內部得到 API 回應,
我想根據我從changeRegion函式傳遞的區域值搜索物件陣列。
例如 -如果我將通過'1UL Africa'或'New Test' or 'South Africa'在changeRegion() 函式內部,那么它將從陣列串列的結果中回傳此特定物件。
預期輸出:
result = [
{
"name": "Africa",
"children": [
{
"name": "Test1",
"region": "1UL Africa"
},
{
"name": "Test2",
"region": "South Africa",
},
{
"name": "Test3",
"region": "New Test",
}
]
}
];
changeRegion(){
this.newRegion = this.getClusterByName('South Africa');
}
getClusterByName(clusterName){
this.data = [
{
"name": "Africa",
"children": [
{
"name": "Test1",
"region": "1UL Africa"
},
{
"name": "Test2",
"region": "South Africa",
},
{
"name": "Test3",
"region": "New Test",
}
]
},
{
"name": "Europe",
"children": [
{
"name": "Test4",
"region": "1UL Africa"
},
{
"name": "Test5",
"region": "Test Europe"
}
]
}
];
};
return this.data.filter(x => x.region === clusterName);
};
uj5u.com熱心網友回復:
你很接近。基本上,您將不得不修改過濾條件。
從:
return this.data.filter(x => x.region === clusterName);
對于這樣的事情:
return this.data.filter(x => x.children.map(child => child.region).includes(clusterName));
我們正在做的是:創建所有子區域的串列,驗證名稱是否包括在內(我們將物件串列轉換為要比較的字串串列。所以,它會更容易)
最后,結果將是:
getClusterByName = (clusterName) => {
this.data = [
{
"name": "Africa",
"children": [
{
"name": "Test1",
"region": "1UL Africa"
},
{
"name": "Test2",
"region": "South Africa",
},
{
"name": "Test3",
"region": "New Test",
}
]
},
{
"name": "Europe",
"children": [
{
"name": "Test4",
"region": "1UL Africa"
},
{
"name": "Test5",
"region": "Test Europe"
}
]
}
];
return this.data.filter(x => x.children.map(child => child.region).includes(clusterName));
};
uj5u.com熱心網友回復:
return this.data.filter(x => x.children.some(z => z.region === clusterName))
您可以檢查是否至少一個專案檢查了陣列中的某個條件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/507199.html
標籤:javascript 有角度的 打字稿 角8
上一篇:如何正確讀取引數值
