Javascript 使用回调功能的Python过滤器方法

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(),但我不知

我有一个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(),但我不知道如何模拟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)