arr — исходные строки.
arr2 — сортированные.
Исходные строки, скорее всего, не будут совпадать ни с одной из сортированных — потому
arr2[i]==sarr[j]
во втором фрагменте, скорее всего, не выполнится.
Я бы поступил таким образом. Сделал бы индексированный список сортированных строк и порядковый массив исходных. Поиск сортированной строки в индексированном списке. Если не обнаружена — сортированную в индексированный, исходную в порядковый.
Что в JS будет индексированным списком — просто не знаю. Вероятно, можно обойтись массивом, присвоив
sortedList[arr2[i]] = 1
. Вот только как найти то, есть ли?
UPD. Можно также воспользоваться хранилищем «ключ-значение»: ключом будет сортированная строка, значением — исходная.
iamevg_ так и поступил. Единственная засада (которая хороша или плоха, в зависимости от задачи) — портит порядок строк.