我正在做一個去中心化的交易所,我正在嘗試實作一個搜索功能,用戶可以在其中放置令牌地址、名稱或符號。但我面臨的挑戰是,當用戶搜索代幣BUSD時,用戶錢包中的代幣會排在首位。例如:-
假設我的錢包里有這些代幣,我收到了來自 web3 的回復
[
{
"token_address":"0x0e262..........",
"name":"Busy DAO",
"symbol":"BUSY",
"logo":null,
"thumbnail":null,
"decimals":"18",
"balance":"685485000000000000000000"
},{
"token_address":"0x1f762..........",
"name":"BUSD Token",
"symbol":"BUSD",
"logo":null,
"thumbnail":null,
"decimals":"18",
"balance":"32491651588824863"
}
]
現在,如果用戶BUS在他們的搜索框中搜索并且他們得到了超過 20 或 30 個令牌的串列,那么我想過濾該陣列并希望匹配搜索到的令牌回應的符號和我錢包中存在的令牌,然后顯示存在的令牌頂部的錢包并根據搜索串列中的名稱或符號(字母順序)顯示其余代幣。
我試圖在網上搜索這個,但我沒有得到任何關于這個的資訊。
這是我的代碼:
// wallet assets
const getWalletAssets = useMoralisWeb3ApiCall(moralisWeb3Api.account.getTokenBalances, {
chain: 'bsc',
address: connectedWallet
})
// Token Search filter (getting tokens)
const searchTokenName = coins.filter((c) => c.name.toLowerCase().includes(search.toLowerCase()))
// Sorting them according to their symbols (alphabetic order)
const searchToken = tokenData.sort((a, b) => a.symbol.localeCompare(b.symbol))
uj5u.com熱心網友回復:
也許這種方法會有所幫助。先過濾進出錢包的結果,然后合并成一個陣列。
const searchResults = ['BNB','BNT','BORA','BSV','BTC','BTCB','BTCST','BTG','BTT','BUSD','DASH','DCR','DENT','DGB','DOGE','ELON','ENJ','EOS','ETC','ETH','EWT','FEI','FET','FIL'];
const walletCoins = ['BTC','DOGE','ETH', '1INCH'];
const resultInWallet = searchResults.filter((coin) => walletCoins.includes(coin));
const resultNotInWallet = searchResults.filter((coin) => !walletCoins.includes(coin));
const result = [...resultInWallet, ...resultNotInWallet];
console.log(result)
.as-console-wrapper{min-height: 100%!important; top: 0}
- - 更新 - -
const searchResults = [{symbol:'BNB'},{symbol:'BNT'},{symbol:'BTC'},{symbol:'BTCB'},{symbol:'BTCST'},{symbol:'BTG'},{symbol:'BTT'},{symbol:'BUSD'},{symbol:'DOGE'},{symbol:'ELON'},{symbol:'ETC'},{symbol:'ETH'},{symbol:'EWT'},{symbol:'FEI'}];
const walletCoins = [{symbol:'BTC'},{symbol:'DOGE'},{symbol:'ETH'},{symbol:'1INCH'}];
const resultObj = searchResults.reduce((acc, targetCoin) => {
if (walletCoins.some((walletCoin) => walletCoin.symbol === targetCoin.symbol)) {
acc.inWallet = [...acc.inWallet, targetCoin];
} else {
acc.notInWallet = [...acc.notInWallet, targetCoin];
}
return acc;
}, { inWallet: [], notInWallet:[] });
const result = [...resultObj.inWallet, ...resultObj.notInWallet];
console.log(result);
.as-console-wrapper{min-height: 100%!important; top: 0}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/408339.html
標籤:
上一篇:使用堆按人口對鄰域進行排序
下一篇:按最后3位數字排序
