Search code examples
javascriptarraysangularangular-reactive-formsangular-forms

Searching For Nested Object in Angular


I have a problem searching for a nested array in my Angular app. I have to access the package.name. Please help thanksenfoiewfhfofhfowfoewhfowfoewhfwefwfhowefweofhew8ofwofhewofw8eofhwf

JSON

[{
    "id": 1,
    "name": "Yeah",
    "package_id": 1,
    "price": 100,
    "package": {
        "id": 1,
        "name": "Yeah"
    }
}]

TS

search(event) {
    const val = event.target.value.toLowerCase();

    if (!val) {
        this.users = this.tempUsers;
    }

    const temp = this.tempUsers.filter((row) => {
        return Object.keys(row).some((property) => {
            return row[property] === null ? null : row[property].toString().toLowerCase().indexOf(val) !== -1;
        });
    });

    this.users = temp;
}

TS

 getAllUsers() {
    this.usersService.getAll()
      .subscribe(
        (data: any) => {
          console.log(data);
          this.users = data.Users;
          this.tempUsers= [...this.users];
        },
        error => {
          console.log(error);
        });
  }

Solution

  • Does this work for you,

    const temp = this.tempUsers.filter((row) => {
      return Object.keys(row).some((property) => {
        if (property === 'package') {
          // check package.name value here
          // like return row[property].name === 'something' ? true : false;
        } else {
        // the rest of the outer properties can be checked here
        // not modifying your code here, but make sure it works for you
        return row[property] === null ? null : row[property].toString().toLowerCase().indexOf(val) !== -1;
        }
      });
    });
    

    I have only answered your question on how to access the nested object inside the array method. Hope it helps or gives you an idea to fine tune your solution.