Jonathan
Jonathan

Reputation: 469

How can I access to the if with an array of objects?

Hello I'm new in JS and I need to test the if.

const length = notifications.length
notifications.forEach((notification, index) => {
if (length > 1 && index < length - 1) {
    toolTipText += ' '
}

In other words I need to declare a variable to enter the if. I have these variable but is wrong and I don't know how to do it well

const mockPropsForComponentAlternatorAndLOW = {
    notifications: [{
        params: {
            subType: 'ALTERNATOR'
        }
    },
        params: {
        subType: 'LOW'
    }]
}

Any suggestions?

Upvotes: 1

Views: 56

Answers (3)

tom
tom

Reputation: 10559

Your script works. Just remove some syntax mistakes and point to the right reference:

mockPropsForComponentAlternatorAndLOW.notifications.length

const mockPropsForComponentAlternatorAndLOW = {
  notifications: [
    {
      params: {
        subType: 'ALTERNATOR'
      }
    },
    {
      params: {
        subType: 'LOW'
      }
    }
  ]
}

const length = mockPropsForComponentAlternatorAndLOW.notifications.length

mockPropsForComponentAlternatorAndLOW.notifications.forEach((notification, index) => {
  if (length > 1 && index < length - 1) {
    alert('in the scope now')
    // toolTipText += ' '
  }
})

Upvotes: 2

bencouture
bencouture

Reputation: 36

I'm not 100% sure what you're asking, but I'm going to interpret this as "my code isn't running, what's wrong with it?". There's a syntax error in your mockPropsForComponentAlternatorAndLOW variable. There needs to be a "{" and "}" around the second "notification" object, like this:

const mockPropsForComponentAlternatorAndLOW = {
    notifications: [{
        params: {
            subType: 'ALTERNATOR'
        }
    },
    {
        params: {
            subType: 'LOW'
        }
    }]
}

Upvotes: 1

T.J. Crowder
T.J. Crowder

Reputation: 1074495

Your question is fairly vague, but if I assume you're building toolTipText by appending notification text and you want a space between each notification text, the minimal change would be to test index > 0 && index < length rather than length > 1 && index < length - 1:

let toolTipText = "";
const length = notifications.length;
notifications.forEach((notification, index) => {
    if (index > 0 && index < length) {
        toolTipText += ' '
    }
    toolTipText += notification.text; // Or whatever the property is called
});

Live Example:

function buildToolTipText(notifications) {
    let toolTipText = "";
    const length = notifications.length;
    notifications.forEach((notification, index) => {
        if (index > 0 && index < length) {
            toolTipText += ' '
        }
        toolTipText += notification.text; // Or whatever the property is called
    });
    return toolTipText;
}
console.log(buildToolTipText([{text: "only"}]));
console.log(buildToolTipText([{text: "first"}, {text: "second"}]));
console.log(buildToolTipText([{text: "first"}, {text: "second"}, {text: "third"}]));

but, you may find it simpler to use map and join:

let toolTipText = notifications.map(n => n.text).join(" ");

Live Example:

function buildToolTipText(notifications) {
    let toolTipText = notifications.map(n => n.text).join(" ");
    return toolTipText;
}
console.log(buildToolTipText([{text: "only"}]));
console.log(buildToolTipText([{text: "first"}, {text: "second"}]));
console.log(buildToolTipText([{text: "first"}, {text: "second"}, {text: "third"}]));

Upvotes: 1

Related Questions