Почему я должен использовать «я в массиве» внутри моего собственного массива «Массива»?
-
27-10-2019 - |
Вопрос
Я много раз видел такие вещи:
function customArrayIndexOf(item, array){
for (var i = 0, l = array.length; i < l; i++) {
if (i in array && array[i] === item) return i;
}
return -1;
}
Однако я не уверен, почему i in array
нужный.
У меня есть три вопроса:
- Что он делает?
- Это необходимо?
- Когда это потерпит неудачу без этого?
Решение
Разреженные массивы могут вызвать ложный положитель без проверки:
var customArrayIndexOf = function(item, array){
for (var i = 0, l = array.length; i < l; i++) {
if (i in array && array[i] === item) return i;
}
return -1;
},
customArrayIndexOfNoCheck = function(item, array){
for (var i = 0, l = array.length; i < l; i++) {
if (array[i] === item) return i;
}
return -1;
};
var t=[]; t[1]=1;
customArrayIndexOfNoCheck(undefined, t); // 0
customArrayIndexOf(undefined, t); // -1
(i
а также l
должен быть местным, т.е. var
)
Не связан с StackOverflow