A classificação JS funciona no Firefox, mas não no IE - não consegue entender por que

Eu tenho uma linha em uma função javascript que classifica uma matriz de objetos com base na ordem de outra matriz de seqüências de caracteres. Isso está funcionando no Firefox, mas não no IE e não sei por quê. Aqui está a aparência dos meus dados na chamada de classificação, no IE7. (Estou usando uma matriz de três itens apenas para ilustrar o ponto aqui).

//cherry first then the rest in alphabetical order
originalData = ['cherry','apple','banana','clementine','nectarine','plum']

//data before sorting - note how clementine is second item - we wan to to to be after apple and banana
csub = [
  {"value":"cherry","data":["cherry"],"result":"cherry"},
  {"value":"clementine","data":["clementine"],"result":"clementine"},
  {"value":"apple","data":["apple"],"result":"apple"},
  {"value":"banana","data":["banana"],"result":"banana"},
  {"value":"nectarine","data":["nectarine"],"result":"nectarine"},
  {"value":"plum","data":["plum"],"result":"plum"}
]

//after sorting, csub has been rearranged but still isn't right: clementine is before banana. in FF it's in the right place.
csubSorted = [
  {"value":"cherry","data":["cherry"],"result":"cherry"},
  {"value":"apple","data":["apple"],"result":"apple"},
  {"value":"clementine","data":["clementine"],"result":"clementine"},
  {"value":"banana","data":["banana"],"result":"banana"},
  {"value":"nectarine","data":["nectarine"],"result":"nectarine"},
  {"value":"plum","data":["plum"],"result":"plum"}
]

Aqui está o código de classificação real:

 csubSorted = csub.sort(function(a,b){ return (originalData.indexOf(a.value) > originalData.indexOf(b.value)); });

Alguém pode ver por que isso não funcionaria? A função básica de classificação de javascript não é compatível com vários navegadores? Posso fazer isso de uma maneira diferente (por exemplo, com jquery) que seria entre navegadores?

grato por qualquer conselho - max

EDIT - isso também não funciona no safari e no chrome - em outras palavras, parece funcionar apenas no firefox.

RESOLVIDO - graças a Tim Down. Na verdade, eu simplifiquei meu código porque percebi que a ordem necessária era sempre "o primeiro item da matriz retornada, seguido pelo restante da matriz classificada usando .value". Então, mudei meu código assim:

  first = csub.shift();
  csubSorted = csub.sort(function(a,b){ 
    return (a.value > b.value); 
  });
  csubSorted.unshift(first);

Mas ainda não estava funcionando. Então Tim (abaixo) apontou que esse tipo espera obter -1, 0 ou 1 de volta da função, NOT true ou false, que é o que meu código estava retornando. Obviamente, o Firefox permite que você se livre disso, mas os outros navegadores não. Tudo o que era necessário era 'converter' verdadeiro ou falso em 1 e -1 (não me preocupo com o caso em que ambas as strings são a samae, efetivamente isso será retornado como -1, o que não faria nenhuma diferença para o de qualquer maneira):

  first = csub.shift();
  csubSorted = csub.sort(function(a,b){ 
    return (a.value > b.value ? 1 : -1); 
  });
  csubSorted.unshift(first);

Tim também me disse que o array.indexOf () não é suportado no IE, o que é irritante, pois mesmo que eu não o esteja usando aqui, estou usando-o em outros bits de código. Droga. Existe uma página de API em algum lugar que lista definitivamente apenas a API javscript compatível com vários navegadores?

questionAnswers(1)

yourAnswerToTheQuestion