Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

146
Visualizações
Don't understand how this code can detect the length
var data = [1, 2, 3, 5, 2, 1, 4];

// iterate over elements and filter
var res = data.filter(function (v) {
    // get the count of the current element in array
    // and filter based on the count
    return data.filter(function (v1) {
        // compare with current element
        return v1 == v;
        // check length
    }).length == 1;
});

console.log(res);

I understand all the line in this code, but I don't understand how it can detect the length==1.

(My opinion) Because it loop though every single element in the array and return boolean value either true or false so how it can use to detect the length?

This code is to get the array element that only appear once in the array.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

  1. The return true is not to return the boolean, but when you return true from inside a filter, that item gets added to the resulting array of filter function.

  2. The process here is called chaining of methods. On line 11, first, the filter is applied to the data array, then the .length method is applied to the result of the filter, which will be an array of equal length or less than the number of elements in the data array. Then finally only once the return is called, which will be a boolean used for the outer filter.

Another example:

function reverseString (inputString) {
    return inputString.split("").reverse().join()
}

In the above example, the function returns after the split, then reverse on the split's result, then join on the reverse's result. The final resulting string is only returned.

about 4 years ago · Juan Pablo Isaza Relatório

0

Don't think about it as lines of code. Split each segment of code into its true meaning my padawan

data.filter(function (v1) {
    // compare with current element
    return v1 == v;
    // check length
})

filters the data array to return an array of elements from data such that every element in it is equal to v

By checking if its length is 1, you want to return true if the the array has only 1 element.

So,

var res = data.filter(function (v) {
    // return true if there is only 1 element in data which is equal to v
});

Which basically means, we are filtering data, and returning a new array where every element is such that it has only one occurrence in the array.

about 4 years ago · Juan Pablo Isaza Relatório

0

The function for filter returns a boolean, but filter itself returns an array.

So, for example:

array.filter(function(element) { return element >= 0; });

says that the function function(element) { return element >= 0; } will be applied to each element in array. Then, if the result of the function is true, that element will exist in the final, filtered version of array (which is what the filter function returns), or will not exist if the result is false.

In effect, all negative numbers from array will be filtered out because they return false.

What your code is saying is the following: For every element in data, filter data to keep only the elements equal to the current one. If this filtered list has only one element, then it can only be our current element. Therefor this element exists only once and should be kept in the final result, so we return true if .length == 1. In the end, once this is done for every element, filter is smart enough to convert those results of true and false into an array of the elements that produced true and leave out those that produced a false.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda