我有一个带有数字对的数组,需要在数组中找到匹配的对

numberStore = [ [0,0],[1,1],[1,2],[1,3],[1,4],[1,5]... ]

我希望能够找到1,4。有没有一种方法可以不依赖numberStore[4]来找到此数组?

最佳答案

由于您需要经常执行此搜索,因此,我将构建一个哈希集,以避免一遍又一遍地进行映射和搜索。例如

const numberStore = [ [0,0],[1,1],[1,2],[1,3],[1,4],[1,5] ]

const hashedSet = new Set(numberStore.map(pair => pair.toString()))
// looks like ["0,0", "1,1", "1,2", "1,3", etc]
console.log([...hashedSet])

const search = (find) => {
  return hashedSet.has(find.toString())
}

console.info('Find [1,4]', search([1,4]))
console.info('Find [4,1]', search([4,1]))


我已经使用Array.prototype.toString()作为哈希函数,但是您可以替换其中为每对创建唯一且可比较的实体的任何东西。

07-24 18:23