написано без учёта повторений одинаковых значений в массивах.
function compare(arr1, arr2){
if(arr1.length !== arr2.length) return false;
var i = 0, a = {};
// заносим в хеш значения первого массива.
while(i in arr1) {
// если на одинаковых позициях стоят одинаковые элементы, то зачем их проверять дальше?
if(arr1[i] !== arr2[i])
a[arr1[i]] = undefined;
i += 1;
}
// проходимся по элементам второго массива
// если значения нет в хеше (т.е. нет в первом массиве, то сразу возвращается false
while(i--) if(!(arr2[i] in a)) return false;
// массивы похожи
return true;
};
var a = ['a','b','c'], b = ['a','b','СТУЛ'], c = ['b','c','a'];
alert([compare(a,c), compare(b,c)]);
почему я использовал хеши и in ? на хабре увидел статью про то, что время на проверку существования через in во всех браузерах всегда равно нулю
хотя вместо хеша можно было бы использовать массив первый и indexOf... но это не для IE.