Home > Blockchain >  How to check with an array have some values
How to check with an array have some values

Time:01-17

How to verify with i have only 2 or 3 numbers inside this? without this ----> if(Array.includes(1) && !Array.includes(3))

const servicesTest: IServices[] = [
  {
    id: '1',
    name: 'Hair',
    price: 25,
    icon: 'https://cdn-icons-png.flaticon.com/512/7478/7478480.png'
  },
  {
    id: '2',
    name: 'Beard',
    price: 20,
    icon: 'https://cdn-icons-png.flaticon.com/512/7578/7578754.png'
  },
  {
    id: '3',
    name: 'Eyebrow',
    price: 15,
    icon: 'https://cdn-icons-png.flaticon.com/512/2821/2821012.png'
  }
]

if the client choose hair beard this will be 40 not 45. I´m doing this:

 const name = findServices.map(services => services.name)
    if (name.includes('Hair') && name.includes('Beard') && !name.includes('Eyebrown')) {
      return (
        setTotalDay(prevState => prevState   40),
        setTotalMonth(prevState => prevState   40)
      )
    }

CodePudding user response:

I would create an array of discounts like this:

const discounts = [{
  price: 30,
  ids: [1, 2],
}];

Then check if the array has only discounted items like this:

array.length === discount.ids.length && array.every((item) => discount.ids.includes(item.id))

const discounts = [{
  price: 30,
  ids: [1, 2],
}];

const discounted = [{
    id: 1,
    name: 'Hair',
    price: 20,
  },
  {
    id: 2,
    name: 'Beard',
    price: 30,
  },
];

const fullPrice = [{
    id: 1,
    name: 'Hair',
    price: 20,
  },
  {
    id: 2,
    name: 'Beard',
    price: 30,
  },
  {
    id: 3,
    name: 'Tea',
    price: 30,
  },
];

console.log("discounted", getTotal(discounted));
console.log("full price", getTotal(fullPrice));

function getTotal(array) {
  for (const discount of discounts) {
    if (
      array.length === discount.ids.length &&
      array.every((item) => discount.ids.includes(item.id))
    ) {
      return discount.price;
    }
  }
  return array.reduce((sum, item) => sum   item.price, 0);
}

CodePudding user response:

answering your question before the edit.

Assuming we have this array

const Array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

Let's say we want to check if values 2 and 3 exist.

We store the values in an array let toCheck = [2,3];

We can use function every to loop all the elements of toCheck array against the Array const

Example Follows:

const Array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let toCheck = [1,2];
const allExist = toCheck.every(value => {
  return Array.includes(value);
});

Hope it helps.

CodePudding user response:

The indexof() method in Javascript is one of the most convenient ways to find out whether a value exists in an array or not. The indexof() method works on the phenomenon of index numbers. This method returns the index of the array if found and returns -1 otherwise

  • Related