Последний элемент массива в js

161
14 апреля 2018, 20:19

Почему в данном коде последний элемент массива который передан функции inArray( [1,2,3,4,5] ) не добавляется в массив result ? Но если в конец массива добавить любой другой элемент то результат будет правильным ( result = [ 3,4,5] ).

function inArray(array) {
    return function (currentArray) {
        var result = [];
        for (var i = 0; i < currentArray.length; ++i) {     
            if (currentArray[i] in array )
                result.push(currentArray[i]);
       } 
       return result ;
    }
}
var a = inArray([1,2,3,4,5])([3,5,4]); // result = 3,4
alert(a); 
Answer 1

Потому что Вы перепутали оператор in и функцию indexOf/includes.

Но если в конец массива добавить ...

(В коде два массива. О каком из них речь? Очевидно, о первом.)

Потому что тогда в array появляется элемент с индексом 5.

function inArray(array) { 
    return function (currentArray) { 
        var result = []; 
        for (var i = 0; i < currentArray.length; ++i) {      
            if (array.includes(currentArray[i])) 
                result.push(currentArray[i]); 
       }  
       return result ; 
    } 
} 
var a = inArray([1,2,3,4,5])([3,5,4]); // result = 3,4 
console.log(a);

READ ALSO
Наследование в реакт?

Наследование в реакт?

У меня есть по сути два компонента с одной и той же логикой в методе componentWillReseiveProps и в некоторых методах еще Как мне применить наследование...

130
Как сделать подобный слайдер? [требует правки]

Как сделать подобный слайдер? [требует правки]

Из готовых решений что-то у меня не получается найтиА вообще было бы лучше своим кодом сделать

117