We're a place where coders share, stay up-to-date and grow their careers.
Probably the shortest
const twoNumbersEqual = (a, k) => !!a.filter(x => a.includes(k-x)).length twoNumbersEqual([10, 15, 3, 7], 17) // == true twoNumbersEqual([10, 13, 4, 7], 17) // == true twoNumbersEqual([10, 15, 3, 9], 17) // == false
slight improvement with a short circuit (find vs filter):
find
filter
const twoNumbersEqual = (a, k) => !!a.find(x => a.includes(k-x))
I just realized both of these solutions fail in the case of twoNumbersEqual([5], 10). This can be fixed by passing the index to includes, as such...
twoNumbersEqual([5], 10)
includes
(a, k) => !!a.find((x, i) => a.includes(k-x, i+1))
This should also theoretically be more performant.
Probably the shortest
slight improvement with a short circuit (
find
vsfilter
):I just realized both of these solutions fail in the case of
twoNumbersEqual([5], 10)
. This can be fixed by passing the index toincludes
, as such...This should also theoretically be more performant.