Столкнулся с занимательным багом в ИЕ.
Массив в Javascript — обычный объект. array.length — свойство. Как оказалось оно может быть undefined для обычного масссива. Использовал аналог php функции array_unique отсюда. Функция отлично отрабатывала в 3 броузерах FF, Chrome, Opera и споткнулась на IE8. Массив обычный 4 элемента {'','app=search','cate_id=208','cate_id=208'}. После выполнения array_unique удалился 3 элемент, как положено.
Первое что меня удивило, array.join() вызвал ошибку. Я первоначально грешил на IE, потом на пустую строку в первом элементе. Потом обнаружил что не работают push и pop. Опытным путем выяснил что length стал undefined. Вот эта замечательная функция.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
function array_unique (inputArr) { var __array_search = function (needle, haystack) { var fkey = ''; for (fkey in haystack) { if (haystack.hasOwnProperty(fkey)) { if ((haystack[fkey] + '') === (needle + '')) { return fkey; } } } return false; }; for (key in inputArr) { if (inputArr.hasOwnProperty(key)) { val = inputArr[key]; if (false === __array_search(val, tmp_arr2)) { tmp_arr2[key] = val; } } } return tmp_arr2; } |
Свежие комментарии