Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

129
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!