方法1:使用Set

const arr = [1, 1, '1', true, true, false, false, {}, {}]
const res = Array.from(new Set(arr))
// => [1, '1', 17, true, false, 'true', 'a', {}, {}]

方法2:两层for 循环 + splice

const arr = [1, 1, '1', true, true, false, false, {}, {}]
const unique = arr => {
	let len = arr.length
	for (let j = i + 1; j < len; j++) {
		arr.splice(j, 1)
		len--
		j--
	}
	return arr
}
unique(arr)
// => [1, '1', 17, true, false, 'true', 'a', {}, {}]

方法3:使用 indexOf

const arr = [1, 1, '1', true, true, false, false, {}, {}]
const unique = arr => {
	const res = []
	for (let i = 0; i < arr.length; i++) {
		if (res.indexOf(arr[i]) === -1) {
			res.push(arr[i])
		}
	}
	return res
}
unique(arr)
// => [1, '1', 17, true, false, 'true', 'a', {}, {}]

方法4:使用 includes

const arr = [1, 1, '1', true, true, false, false, {}, {}]
const unique = arr => {
	const res = []
	for (let i = 0; i < arr.length; i++) {
		if (!res.includes(arr[i])) {
			res.push(arr[i])
		}
	}
	return res
}
unique(arr)
// => [1, '1', 17, true, false, 'true', 'a', {}, {}]

方法5:使用 filter

const arr = [1, 1, '1', true, true, false, false, {}, {}]
const unique = arr => arr.filter((item, index) => arr.indexOf(item) === index)
unique(arr)
// => [1, '1', 17, true, false, 'true', 'a', {}, {}]

方法6:使用 Map

const arr = [1, 1, '1', true, true, false, false, {}, {}]
const unique = arr => {
	const map = new Map()
	const res = []
	for (let i = 0; i < arr.length; i++) {
		if (!map.has(arr[i])) {
			map.set(arr[i], true)
			res.push(arr[i])
		}
	}
	return res
}
unique(arr)
// => [1, '1', 17, true, false, 'true', 'a', {}, {}]