Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

287
Views
array function some not working as expected? What is wrong in my code?
 const priceType = ['monthly', 'annual'];
 var discounts =[
                    {product: "A", monthlyDiscount : 15.0, monthlyMaxDiscount: 30.0, annualDiscount : 25.0, annualMaxDiscount : 20.0},
                    {product: "B", monthlyDiscount : 5.0, monthlyMaxDiscount: 20.0, annualDiscount : 40.0, annualMaxDiscount : 30.0}
                ]
                
 var exceedsDiscount; 

If any of my discount objects exceeds max discount I need to set the Boolean as true and stop checking other array items.

I used for loops and this works as expected :

 exceedsDiscount = false;
 angular.forEach(priceType, function(type){
       angular.forEach(discounts, function(discount){
           if(discount[`${type}Discount`] > discount[`${type}MaxDiscount`]){
               exceedsDiscount = true;
               return; 
           }

    });  

If I try to use the every and some arrow functions the outcome is not same. It randomly gives true or false. Any idea how I can do using without using two for loops?

exceedsDiscount = false;
    exceedsDiscount = priceType.every(type => discounts.some(discount =>{return discount[`${type}Discount`] > discount[`${type}MaxDiscount`];}));
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

As noted by trincot in the comment, instead of .every(.... .some(...)), if one uses .some(... .some(...)) - the required result is obtained.

By 'some .. some' we refer to a scenario that there is "some" type for which there is "some" discount which is greater than maxDiscount.

Snippet below:

const priceType = ['monthly', 'annual'];
var discounts = [{
    product: "A",
    monthlyDiscount: 15.0,
    monthlyMaxDiscount: 30.0,
    annualDiscount: 25.0,
    annualMaxDiscount: 20.0
  },
  {
    product: "B",
    monthlyDiscount: 5.0,
    monthlyMaxDiscount: 20.0,
    annualDiscount: 40.0,
    annualMaxDiscount: 30.0
  }
];

const everySome = priceType.every(type => discounts.some(discount =>{return discount[`${type}Discount`] > discount[`${type}MaxDiscount`];}));;

const someSome = priceType.some(type => discounts.some(discount =>{return discount[`${type}Discount`] > discount[`${type}MaxDiscount`];}));

console.log(
  '\n.every(.. .some( returns: ', JSON.stringify(everySome),
  '\n.some(.. .some(  returns: ', JSON.stringify(someSome)
);

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!