JS sort funciona en Firefox pero no en IE, no puedo entender por qué

Tengo una línea en una función de JavaScript que clasifica una matriz de objetos según el orden de otra matriz de cadenas. Esto está funcionando en Firefox pero no en IE y no sé por qué. Así es como se ven mis datos en la llamada de clasificación, en IE7. (Estoy usando una matriz de tres elementos solo para ilustrar el punto aquí).

//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"}
]

Aquí está el código de clasificación real:

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

¿Alguien puede ver por qué esto no funcionaría? ¿La función básica de clasificación de JavaScript no es compatible con varios navegadores? ¿Puedo hacer esto de una manera diferente (por ejemplo, con jquery) que sería cross-browser?

agradecido por cualquier consejo - max

EDITAR: esto tampoco funciona en safari y cromo; en otras palabras, solo parece funcionar en firefox.

RESUELTO - gracias a Tim Down. De hecho, simplifiqué mi código porque me di cuenta de que el orden que necesitaba siempre era "el primer elemento en la matriz devuelta seguido por el resto de la matriz ordenada usando .value". Entonces, cambié mi código así:

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

Pero, todavía no estaba funcionando. Entonces Tim (a continuación) señaló que ese tipo espera obtener un -1, 0 o 1 de la función, NO verdadero o falso, que es lo que estaba devolviendo mi código. Obviamente, Firefox te permite salirte con la tuya, pero los otros navegadores no. Todo lo que se requería era 'traducir' verdadero o falso a 1 y -1 (no me preocupa el caso en que ambas cadenas son las samae, efectivamente eso se devolverá como -1, lo que no haría ninguna diferencia en el orden de clasificación de todos modos):

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

Tim también me dijo que array.indexOf () no es compatible con IE, lo cual es molesto porque, aunque ya no lo estoy usando aquí, lo estoy usando en otros bits de código. Maldita sea ¿Hay una página API en algún lugar que enumere definitivamente solo la API javscript compatible con varios navegadores?

Respuestas a la pregunta(1)

Su respuesta a la pregunta