Ananthaselvam P
Ananthaselvam P

Reputation: 382

Update array element value in typescript ( Angular )

I am using angular 5. I need to update the array value based selectedMobile. My coding :

const mobilelist = [
    { 'key': 'apple', 'name': 'Apple', 'checked': false },
    { 'key': 'sumsung', 'name': 'Sumsung', 'checked': false },
    { 'key': 'oneplus', 'name': 'Oneplus', 'checked': false },
    { 'key': 'mi', 'name': 'Mi', 'checked': false }
  ]; 
const selectedMobile = ['apple']; 
const newmobilelist: any = [];
if (selectedMobile.length > 0) {
  mobilelist.forEach(element => {
    if (selectedMobile.find(x => x == element.key) != null) {
      newmobilelist.push({ 'key': element.key, 'name': element.name, 'checked': true });
    } else {
      newmobilelist.push({ 'key': element.key, 'name': element.name, 'checked': false });
    }
  });
}
console.log(newmobilelist);

In console, I am expecting result like :

[
  { 'key': 'apple', 'name': 'Apple', 'checked': true },
  { 'key': 'sumsung', 'name': 'Sumsung', 'checked': false },
  { 'key': 'oneplus', 'name': 'Oneplus', 'checked': false },
  { 'key': 'mi', 'name': 'Mi', 'checked': false }
];

But above code return like :

[
  { 'key': 'apple', 'name': 'Apple', 'checked': false },
  { 'key': 'sumsung', 'name': 'Sumsung', 'checked': false },
  { 'key': 'oneplus', 'name': 'Oneplus', 'checked': false },
  { 'key': 'mi', 'name': 'Mi', 'checked': false }
]; 

I don't why?, Please help to resolve...

Upvotes: 2

Views: 11769

Answers (1)

bugs
bugs

Reputation: 15313

As already said, your code seems to be working fine. However, it's unnecessarily complicated, you can drastically shrink it like this.

const mobilelist = [
    { 'key': 'apple', 'name': 'Apple', 'checked': false },
    { 'key': 'sumsung', 'name': 'Sumsung', 'checked': false },
    { 'key': 'oneplus', 'name': 'Oneplus', 'checked': false },
    { 'key': 'mi', 'name': 'Mi', 'checked': false }
];
const selectedMobile = ['apple'];
const newmobilelist = mobilelist.map(x => { x.checked = selectedMobile.includes(x.key); return x});
console.log(newmobilelist)

Upvotes: 6

Related Questions