我有下面帶有不同陣列的物件,我想洗掉顯示的重復名稱。我怎樣才能做到這一點?
重名的樣子
資料正在以這種方式列印
所有資料
dsUserId 是重復的內容。而且我希望能夠洗掉重復項dsUserId
這里是生成所有資料的地方。
this.setState({
user_connections: results.data.data.connections,
newLeads: results2.data.data,
promotion: results3.data.data,
hasPromotion: results3.data.data.length === 0 ? false : true,
promoPlan: promoPlan,
toRemoveDays: excludedDays
});
console.log("All data", this.state.user_connections)
}
這里是渲染資料的地方。
<select
id="user_select"
style={{ width: "70%" }}
name="selectedUser"
onChange={e => {
this.setState({
[e.target.name]: e.target.value.trim()
});
}}
className="form-control"
>
<option value={null} disabled hidden selected>
Please Select
</option>
{this.state.user_connections.map(u => (
<option value={u.parentId} key={u.parentId}>
{u.displayName}
</option>
))}
</select>
uj5u.com熱心網友回復:
您可以使用它filter來實作此目的,例如:
const userConnections = (connections) => {
const uniqueIds = [];
return connections.filter(connection => {
if (!uniquesIds.includes(connection.dsUserId) {
uniqueIds.push(connection.dsUserId);
return connection;
}
})
};
進而 :
user_connections: userConnections(results.data.data.connections)
uj5u.com熱心網友回復:
不確定是否是最好的方法,但我會首先創建一個所有唯一 dsUserIds 的集合,然后為每個 dsUserId 過濾 user_connections 陣列中的第一個:
let tsUserIds = [];
this.state.user_connections.forEach(user => {
tsUserIds.push(user.dsUserId);
})
tsUserIds = [...new Set(tsUserIds)]; // filters out the duplicates
let uniqueConnections = [];
tsUserIds.forEach(id => {
uniqueConnections.push(this.state.user_connections.filter(user => user.dsUserId === id)[0]);
})
console.log(uniqueConnections);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/354099.html
標籤:javascript 反应
