我有一個物件陣列
const units = [
{id: 1, status: "AVAILABLE"},
{id: 1, status: "ASSIGNED"},
{...}
]
我的目標是撰寫一個函式,將陣列過濾為兩個新陣列——一個陣列用于具有的物件,status: "AVAILABLE"另一個陣列用于具有status: "ASSIGNED"
我正在設定狀態
const [availableUnits, setAvailableUnits] = useState([]);
const [assignedUnits, setAssignedUnits] = useState([]);
我想過濾單位陣列并將每個新陣列設定為其給定狀態。我試圖做這樣的事情:
setAvailableUnits(() => units.filter((unit) => {
return unit.status === "AVAILABLE";
}))
但這不起作用。我想要一個功能來過濾和設定兩種狀態的狀態。
謝謝你。
uj5u.com熱心網友回復:
你可以像下面的代碼那樣做
setAvailableUnits(data.filter((v)=> v.status === "AVAILABLE"));
setAssignedUnits(data.filter((v)=> v.status === "ASSIGNED"));
uj5u.com熱心網友回復:
如果units在渲染組件之前已經知道你可以試試這個
const [availableUnits, setAvailableUnits] = useState(units.filter((v)=> v.status === "AVAILABLE"));
const [assignedUnits, setAssignedUnits] = useState(units..filter((v)=> v.status === "ASSIGNED"));
如果不是,它來自fetching例如
你可以試試
setAvailableUnits(data.filter((v)=> v.status === "AVAILABLE"));
setAssignedUnits(data.filter((v)=> v.status === "ASSIGNED"));
uj5u.com熱心網友回復:
這僅在只有兩種狀態可用時才有效:AVAILABLE和ASSIGNED。如果要包含更多狀態,請修改 if 陳述句。
const units = [
{id: 1, status: "AVAILABLE"},
{id: 1, status: "ASSIGNED"},
];
const newAvailableUnits = [];
const newAssignedUnits = [];
units.forEach((unit) => {
if (unit.status === "AVAILABLE") newAvailableUnits.push(unit);
else newAssignedUnits.push(unit);
})
setAvailableUnits(newAvailableUnits);
setAssignedUnits(newAssignedUnits);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/318239.html
標籤:javascript 反应
上一篇:如何使按鈕按字母順序對物件陣列進行排序javascript反應
下一篇:影像不呈現反應
