如何检查元组数组中索引0的匹配值并输出对应索引1的数值?
解决方案:匹配TypeScript元组数组中的地址并获取对应数值
你当前的代码无法实现需求,原因是Array.includes()方法会严格匹配数组中的整个元素——你的数组元素是[string, number]类型的元组,而manualAddress是字符串,类型不匹配,所以永远无法找到匹配项。
要实现“匹配元组索引0的地址,并获取索引1的数值”的功能,可以使用以下两种方法:
方法一:使用find()直接获取匹配的元组
var tuparray: [string, number][] = [["0x123", 11], ["0x456", 7], ["0x789", 6]]; const manualAddress = "0x456"; // 替换为用户输入的地址 // 查找第一个索引0值等于manualAddress的元组 const matchedTuple = tuparray.find(tuple => tuple[0] === manualAddress); if (matchedTuple) { console.log(`address qualifies for ${matchedTuple[1]}`); } else { console.log("No matching address found"); }
方法二:使用findIndex()获取匹配项的索引
如果需要同时获取匹配项在数组中的位置,可以用这个方法:
var tuparray: [string, number][] = [["0x123", 11], ["0x456", 7], ["0x789", 6]]; const manualAddress = "0x456"; const matchIndex = tuparray.findIndex(tuple => tuple[0] === manualAddress); if (matchIndex !== -1) { console.log(`address qualifies for ${tuparray[matchIndex][1]}`); } else { console.log("No matching address found"); }
核心说明
find()会返回第一个满足条件的元组,找不到则返回undefinedfindIndex()会返回匹配元组的索引,找不到则返回-1- 两种方法都通过箭头函数指定匹配规则:检查元组的第一个元素是否等于用户输入的
manualAddress
内容的提问来源于stack exchange,提问作者Phantom Jake
相关产品推荐
相关产品推荐

