我面臨一個問題,要修復一個錯誤。
我正在從dataBase獲取資料。資料(物件)包含一個名稱陣列。 我有useState鉤子,其中包含一個物件陣列。其值是名字。 我想從useState鉤子中洗掉每一個物件,這些物件的名字來自為dataBase獲取的陣列。
Exp:
response.data.players = ["player1"/span>, "player2"/span>]
const [names, setNames] = useState([
{value: "player1", label: "player1"}。
{value: "player3", label: "player3"}。
{value: "player2"/span>, label: "player2"}。
{value: "player5"/span>, label: "player5"}。
])
我希望這些名字變成這樣:
[
{value: "player3", label: "player3"}。
{value: "player5"/span>, label: "player5"}。
]
以最小的時間復雜度(我已經用.map為其他鉤子的名字提供服務,如果我可以使用它,這將是完美的時間復雜度)
謝謝你
uj5u.com熱心網友回復:
。const names = [
{ value: "player1", label: "player1" },
{ value: "player3", label: "player3" },
{ value: "player2", label: "player2" },
{ value: "player5", label: "player5" },
];
const players = ["player1"/span>, "player2"/span>];
const set = new Set(player);
const result = names.filter(({ label }) => !set.has(label)) 。
console.log(result);
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
對我來說,這聽起來像是一個過濾器。你就不能做這樣的事情嗎:
setNames(names.filter(>name => ! response.data.players.includes(name.label))。
作為參考,以下是在沒有React的情況下的作業情況:
。const names = [{
value: "player1",
label: "player1".
},
{
value: "player3",
label: "player3".
},
{
value: "player2",
label: "player2".
},
{
value: "player5",
label: "player5".
},
];
const response = {
data: {
players: ["player1", "player2"],
},
};
const filteredNames = names.filter(name => ! response.data.players.includes(name.label))
console.log(filteredNames);
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/306932.html
標籤:
上一篇:為什么陣列元素沒有改變位置?
