JS sort funktioniert in Firefox, aber nicht im IE - kann nicht herausfinden, warum

Ich habe eine Zeile in einer JavaScript-Funktion, die ein Array von Objekten in der Reihenfolge eines anderen Arrays von Zeichenfolgen sortiert. Dies funktioniert in Firefox, aber nicht im IE und ich weiß nicht warum. So sehen meine Daten für den Sortieraufruf in IE7 aus. (Ich verwende eine Reihe von drei Elementen, um den Punkt hier zu veranschaulichen.)

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

Hier ist die aktuelle Sortiercode:

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

Kann jemand sehen, warum das nicht funktioniert? Ist die grundlegende Javascript-Sortierfunktion nicht browserübergreifend kompatibel? Kann ich das anders machen (zB mit jquery) als browserübergreifend?

dankbar für jeden rat - max

EDIT - dies funktioniert auch nicht in Safari und Chrome - mit anderen Worten, es scheint nur in Firefox zu funktionieren.

SOLVED - danke an Tim Down. Ich hatte meinen Code tatsächlich vereinfacht, weil mir klar wurde, dass die von mir benötigte Reihenfolge immer "das erste Element im zurückgegebenen Array, gefolgt vom Rest des Arrays, sortiert nach .value" war. Also habe ich meinen Code so geändert:

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

Aber es hat immer noch nicht funktioniert. Dann wies Tim (unten) darauf hin, dass sort erwartet, von der Funktion eine -1, 0 oder 1 zurück zu bekommen, NICHT wahr oder falsch, was mein Code zurückgab. Offensichtlich können Sie mit Firefox davonkommen, mit den anderen Browsern jedoch nicht. Alles, was benötigt wurde, war, wahr oder falsch in 1 und -1 'zu übersetzen' (ich mache mir keine Sorgen über den Fall, dass beide Zeichenketten die Samae sind, effektiv wird das als -1 zurückgegeben, was keinen Unterschied für die Samae machen würde Sortierreihenfolge trotzdem):

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

Tim sagte mir auch, dass array.indexOf () im IE nicht unterstützt wird, was ärgerlich ist, obwohl ich es hier nicht mehr verwende, verwende ich es in anderen Code-Bits. Verdammt. Gibt es irgendwo eine API-Seite, auf der definitiv nur die browserübergreifend kompatible javscript-API aufgeführt ist?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage