iT邦幫忙

1

如何取出陣列中重複/不重複的值

前幾天在群組剛好看到有人發問:
有一組陣列:[1, 8, 2, 3, 4, 5, 4, 6, 2, 7]
該如何取出不重複值讓陣列變成:[1, 8, 2, 3, 4, 5, 6, 7]
因為連假的關係,腦袋已自動關機許久~
仔細的思考一下解法,就在這時腦袋忽然靈光一閃
想到了兩種有最有效又最方便的做法!!

第一種是ES6的語法糖,使用解構賦值的方式搭配new Set()

const arr = [1, 8, 2, 3, 4, 5, 4, 6, 2, 7]
let newArr = [...new Set(arr)]
console.log(newArr) //[1, 8, 2, 3, 4, 5, 6, 7]

第二種是採用filter搭配indexOf的方法

const arr = [1, 8, 2, 3, 4, 5, 4, 6, 2, 7]
let newArr = arr.filter((item, index) => {
  return arr.indexOf(item) === index
})
console.log(newArr) //[1, 8, 2, 3, 4, 5, 6, 7]

若是要取出有重複的值,則改變判斷符號就行

const arr = [1, 8, 2, 3, 4, 5, 4, 6, 2, 7]
let newArr = arr.filter((item, index) => {
  return arr.indexOf(item) !== index
})
console.log(newArr) //[4, 2]

若有其他簡易的做法,歡迎在下方留言一起討論成長


尚未有邦友留言

立即登入留言