我有3个功能
const func1 = () => {
return 1
}
const func2 = () => {
return 1
}
const func3 = () => {
return 2
}
let arr = [func1, func2, func3]
如何从
func1
中过滤重复项(func2
和arr
),这样我就会有这样的东西filteredArr=[()=>{return 1},()=>{return 2}]
?
尝试对它们中的每一个进行字符串化,然后将 if 与 eval 一起使用,但我想在不使用 eval 的情况下过滤数组
您可以通过在内部进行额外检查来过滤数组,但这需要您调用函数。
const func1 = () => {
return 1
}
const func2 = () => {
return 1
}
const func3 = () => {
return 2
}
let arr = [func1, func2, func3]
const uniqueItems = arr.filter((func, index, array) =>
index === array.findIndex(f => f() === func())
)
console.log(uniqueItems)
您可以使用 lodash 库(这里有文档):
import _ from 'lodash';
const uniqueValues = _.uniq(arr)