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

103
Views
JavaScript returning different array inside and outside of Observable

I have a function that should return an array of Object with 2 properties:

setusersExpiryDate() {

let userList = [];
let userList2 = [];

for (let i = 0; i < this.usersIdsList.length; i++) {
    this.userService.getUserDetails(this.usersIdsList[i]).subscribe(
        user => {
            if (user.type === 'INTERNAL') {
                userList[i] = {
                    user: this.usersIdsList[i],
                    expirationDate: this.getInternalExpiryDate()
                }
            }
            if (user.type === 'EXTERNAL') {
                userList[i] = {
                    user: this.usersIdsList[i],
                    expirationDate: this.getExternalExpiryDate()
                }
            }
        },
        error => console.log(error)
    );
    userList2[i] = {
        user: this.usersIdsList[i],
        expirationDate: this.getInternalExpiryDate()
    }
}
console.log(userList);
console.log(userList2);

return userList;
}

the first array userList will return something like this:

[]
 0: {user: 'USER222', expirationDate: Tue Oct 25 2022 12:32:45 GMT+0100 (Western European 
  Summer Time)}
 1: {user: 'USER321', expirationDate: Sun Oct 25 2026 12:32:45 GMT+0000 (Western European 
    Standard Time)}
 2: {user: 'USER011', expirationDate: Sun Oct 25 2026 12:32:45 GMT+0000 (Western European 
    Standard Time)}
 length: 3
 [[Prototype]]: Array(0)

and the 2nd array userList2 , which is outside of Observable is giving the right result:

(3) [{…}, {…}, {…}]
 0: {user: 'USER222', expirationDate: Mon Oct 25 2021 12:32:45 GMT+0100 (Western European 
     Summer Time)}
 1: {user: 'USER321', expirationDate: Mon Oct 25 2021 12:32:45 GMT+0100 (Western European 
     Summer Time)}
 2: {user: 'USER011', expirationDate: Mon Oct 25 2021 12:32:45 GMT+0100 (Western European 
     Summer Time)}
 length: 3
 [[Prototype]]: Array(0)

I want to know what I'm doing wrong with array userList , because I want it return same result as userList2.

userList => [] empty array : Wrong / userList2 => [{…}, {…}, {…}] array with 3 objects on it : right

about 4 years ago · Juan Pablo Isaza
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!