2

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...

2
  • 2
    This works as expected on JSFiddle: jsfiddle.net/t6nz7qx0/1 and should work with Angular as well. Is this all you are doing or is there more code? Commented Jun 14, 2018 at 8:08
  • your code works fine for me in my javascript console (if I remove the ':any' to make it pure JavaScript) Commented Jun 14, 2018 at 8:09

1 Answer 1

6

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)

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.