0

I want to update each field in the flags[ ] array inside a for loop. during every iteration i need to update the respective flag to true. Please help me to solve this.

var flags = {terminationFlag : false,
        transferFlag : false,
        jrCancelledFlag : false,
        jrFilledFlag : false,
        jrOpenFlag : false,
        miegFlags : false,
        headcountFlag : false,
        replacementReqFlag : false,
        costcentreFlag : false,
        gradeMapFlag : false}


var array = [1,2,3,4,5,6,7,8,9,10];
for (i=0; i < array.length ;i++){
flags[i] = true
}

if (("terminationFlag" = true) && ("transferFlag" = true)){
 //do some operation
 }  
1
  • Why aren't you iterating on the keys instead of unrelated indices? Commented Jan 21, 2019 at 9:45

3 Answers 3

1

You have a flags object which is not an array. You can use Object.keys if you want an array

let flags = {
  terminationFlag: false,
  transferFlag: false,
  jrCancelledFlag: false,
  jrFilledFlag: false,
  jrOpenFlag: false,
  miegFlags: false,
  headcountFlag: false,
  replacementReqFlag: false,
  costcentreFlag: false,
  gradeMapFlag: false
}

Object.keys(flags).forEach(key => {
  flags[key] = true;
})
console.log(flags)

PS: if (("terminationFlag" = true) && ("transferFlag" = true)){

will not work as expected since you try to set a string to true in the if statement instead of testing them

if (flags["terminationFlag"] && flags["transferFlag"]) { or

if (flags["terminationFlag"]===true && flags["transferFlag"]===true) {

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

Comments

1

The traditional for loop in your code is used to iterate over elements in an array, not the key-value pairs in the provided flags object.

Instead use a for...in statement to iterate over the keys in the flags object and set the values of the keys to true.

Try this out:

var flags = {terminationFlag : false,
    transferFlag : false,
    jrCancelledFlag : false,
    jrFilledFlag : false,
    jrOpenFlag : false,
    miegFlags : false,
    headcountFlag : false,
    replacementReqFlag : false,
    costcentreFlag : false,
    gradeMapFlag : false}

// a little more readable than the previous answers
for (const prop in flags) {
  flags[prop] = true;
}

console.log(flags);

Comments

0

flags is an Object. So, you can use Object.key() to iterate keys and assign values.

'use strict';

var flags = {
  terminationFlag: false,
  transferFlag: false,
  jrCancelledFlag: false,
  jrFilledFlag: false,
  jrOpenFlag: false,
  miegFlags: false,
  headcountFlag: false,
  replacementReqFlag: false,
  costcentreFlag: false,
  gradeMapFlag: false
};

for (let attr of Object.keys(flags)) {
  flags[attr] = true;
}

Also,

if (("terminationFlag" = true) && ("transferFlag" = true)){

You're using = which means assignment. You need to use ==== to check condition. And, since we know the key whose value we need to check, we can check using truthy check.

if (flags.terminationFlag && flags.transferFlag) {
  //do some operation
}

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.