Javascript 使用回调功能的Python过滤器方法
我有一个JavaScript方法,可以过滤数组中相隔一天的条目:Javascript 使用回调功能的Python过滤器方法,javascript,python-3.x,Javascript,Python 3.x,我有一个JavaScript方法,可以过滤数组中相隔一天的条目: one\u day\u delta=availableDates.filter((日期、索引、arr)=>{ return Math.abs(moment(date).diff(moment(arr[index-1]),'days')==1 | | Math.abs(moment(date).diff(moment(arr[index+1]),'days')==1 }) 我知道存在一个Python函数:filter(),但我不知
one\u day\u delta=availableDates.filter((日期、索引、arr)=>{
return Math.abs(moment(date).diff(moment(arr[index-1]),'days')==1 | | Math.abs(moment(date).diff(moment(arr[index+1]),'days')==1
})
我知道存在一个Python函数:filter(),但我不知道如何模拟JavaScript filter内置回调参数的内置参数。Python的内置filter方法只为迭代传递给定项,而不传递索引或数组引用。我不认为Python内置了其他任何东西可以让JS
.filter()
如何工作,但是您可以很容易地自己编写一个,如下所示:
def myFilter(cb, array):
results = []
for index, item in enumerate(array):
result = cb(item, index, array)
# if returned true, append item to results
if result:
results.append(item)
return results
myArr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
def filterVowelsCb(letter, index, arr):
# Show that each iteration gets the item, index, and reference to the array
print("letter: " + letter, "index: " + str(index), "arr: " + str(arr))
vowels = ['a', 'e', 'i', 'o', 'u']
# Need to return a true/false value just like in JS
return letter in vowels
vowels = myFilter(filterVowelsCb, myArr)
print(vowels)