javascriptのpushの戻り値に注意
javascriptでuniqメソッドを実装してみようしたら動かなかった
let uniq = arr => { return arr.reduce((acc, cur) => { return acc.includes(cur) ? acc : acc.push() }, []) }
理由:pushの戻り値は新しい配列ではなく、その配列の長さだから
let arr = ['a', 'b', 'c', 'd'] console.log(arr.push('e')); // 5
ということで動くようにするにはpushするかどうかをifにして、accをreturnすればいいんだけど
concat使うと期待通りになるからそうした
let uniq = arr => { return arr.reduce((acc, cur) => { return acc.includes(cur) ? acc : acc.concat(cur) }, []) }