我试图比较2个不同的API调用,从中我能够找出2个不同的ID数组,所以我试图过滤掉已经存在于array2中的ID,对于剩余的ID,我试图设置状态,有人能帮我吗?
目前代码:
const [ prevAdmins , setPrevAdmins ] = useState<any>([]);
const [options, setOptions] = useState([{value: "", label: ""}]);
//API 1 CALL
get_user_groups({bot_id:params.botid , group_id:params.userid}).then((res) => {
setDetails(res?.data?.data[0]);
setGroupName(res?.data?.data[0].name)
let prevAdmins: any = [];
res?.data?.data[0]?.join_details.map((prevJoinee , idx) => {
prevAdmins.push(prevJoinee.user_id)
setPrevAdmins(prevAdmins)
})
});
//OUTPUT FOR API 1 "prevAdmins": ['61dfcfb71f492f4f4f589e93', '61dedd23bd15322626dd7539']
//2nd API CALL :
get_followers({bot_id:params.botid}).then((res) => {
if(res.data.data){
let option: any = [];
let allAdmins: any = [];
res.data.data.map((admin, index) => {
allAdmins.push(admin._id);
if(!prevAdmins.includes(allAdmins)){
option.push({value: admin._id, label: admin.displayName})
}
})
setOptions(option);
}
})
//OUTPUT FOR API 2 : ['61dfd02a1f492f4f4f589f00', '61dfcfb71f492f4f4f589e93', '61dedd23bd15322626dd7539']
现在,我尝试排除已经存在于数组1中的id,并且setOptions应存储未排除的id。
问候!
3条答案
按热度按时间9udxz4iz1#
使用spread运算符以避免重复
r7xajy2e2#
如果你想从你的api调用中得到唯一的值,你可以使用
Set
代替数组.请参考:https://www.javatpoint.com/typescript-set
jmo0nnb33#
你可以使用扩展操作符来组合两个数组,然后将其转换为集合,并从该集合中创建一个数组。它将是唯一的。
大致上你可以做一些类似于这个方法的事情。
spread运算符将合并两个数组,但它也将具有重复值。当您将它转换为Set时,它将删除任何重复值。
然后,您可以简单地从该Set变量生成一个数组。
你也可以这样做来缩短它。
在你有了唯一的数组之后,你可以简单地用uniqueArray变量设置状态。
在您的情况下:
如果你得到这两个数组的话。
你可以做这样的事情