Использование indexOf в CoffeeScript

Я использую следующий код в CoffeeScript:

if elem in my_array
  do_something()

Который компилируется в этот javascript:

if (__indexOf.call(my_array, elem) < 0) {
  my_array.push(elem);
}

Я вижу, что он использует функцию __indexOf, которая определена в начале скрипта.

Мой вопрос касается следующего варианта использования: Я хочу удалить элемент из массива и хочу поддерживать IE8. Я могу легко сделать это с помощью indexOfи spliceв браузерах, которые поддерживают indexOfдля объекта array. Однако в IE8 это не работает:

if (attr_index = my_array.indexOf(elem)) > -1
  my_array.splice(attr_index, 1)

Я пытался использовать функцию __indexOf, определенную CoffeScript, но получаю ошибку зарезервированного слова в компиляторе.

if (attr_index = __indexOf.call(my_array, elem) > -1
  my_array.splice(attr_index, 1)

Итак, как я могу использовать CoffeScript или есть более незаметный метод для вызова indexOf?Кажется странным определять одну и ту же функцию дважды только потому, что CoffeeScript не позволяет мне использовать их...

5
задан Cristian 21 June 2012 в 14:29
поделиться