使用JavaScript高阶函数查找数组中两个数字之间的输入

使用JavaScript高阶函数查找数组中两个数字之间的输入,javascript,higher-order-functions,Javascript,Higher Order Functions,我正在努力提高我的JavaScript熟练程度,所以我构建了一个计算联邦累进税的税务计算器,它符合我的喜好 然而,本练习的重点是学习更多关于JavaScript的知识。我现在讨论的概念是高阶函数。经历了一些困难。有一些内置的高阶函数,如forEach和sort,我正在考虑在这里实现,但不知道如何实现 根据ECMA6,有一种利用高阶函数的新技术,它使用=>技术,但这对我来说也是一个陌生的概念 理想情况下,我们解决这个问题时不会使用我创建的混乱for循环,而是使用更具体的问题的高阶自定义或原型函数。

我正在努力提高我的JavaScript熟练程度,所以我构建了一个计算联邦累进税的税务计算器,它符合我的喜好

然而,本练习的重点是学习更多关于JavaScript的知识。我现在讨论的概念是高阶函数。经历了一些困难。有一些内置的高阶函数,如
forEach
sort
,我正在考虑在这里实现,但不知道如何实现

根据ECMA6,有一种利用高阶函数的新技术,它使用
=>
技术,但这对我来说也是一个陌生的概念

理想情况下,我们解决这个问题时不会使用我创建的混乱for循环,而是使用更具体的问题的高阶自定义或原型函数。

下面列出的相同问题可以在我的代码笔上找到,以便于操作:

var singleBracket=[92753765091150190150413350415050,无穷大];
风险价值百分比=[0.1,0.15,0.25,0.28,0.33,0.35,0.396];
var税=0;
var salaryInput=60000;
var lowestPercent=singlePercent[0];
var highestPercent=singlePercent[singlePercent.length-1];
var lowestAmount=单括号[0];
var highestAmount=单支架[singleBracket.length-2];
对于(变量i=0;i单括号[i]&工资输入<单括号[i+1]){
税收+=(工资输入单括号[i])*单百分比[i+1];
对于(var check=i;check>0;check--){
var progressiveTax=(单括号[check]-单括号[check-1])*单百分比[check];
税收+=累进税;
}
税收+=最低金额*最低百分比;
控制台日志(税务);
}
}

感谢您提供的帮助,我很难独自学习,非常感谢您对高阶函数主题的指导。

不确定问题是什么?预期的结果是什么?我建议您首先用forEach()替换其中一个for循环。请看下面的示例。“根据ECMA6,有一种利用=>技术的高阶函数的新技术”-使用=>是定义函数的一种方法,它不是专门用于高阶函数的(尽管它在那里很有用)。暂时别理它。谢谢@nnnnnn我会调查的it@guest271314我认为它可能会在文本中丢失,所以我将其加粗:理想情况下,我们解决这个问题时不会出现我创建的混乱for循环,另外,我建议您在充分理解ES5之前,不要过多地研究ES6。事实上,ES6的大多数语法对于您已经可以做的事情来说只是更好的语法,并且将以与ES5相同的方式工作,所以我认为它只是更无用的混淆。例如,
=>
只是定义函数的一种新语法,但它们也有一些微妙的行为变化,您现在根本不关心这些变化。所以,是的,只要学习好的ES5(即使在ES5中也经常使用高阶函数),几个月后你就会更容易、更清楚地理解ES6。
var singleBracket = [9275, 37650, 91150, 190150, 413350, 415050, Infinity];
var singlePercent = [0.1, 0.15, 0.25, 0.28, 0.33, 0.35, 0.396]; 

var taxes=0;

var salaryInput = 60000;

var lowestPercent = singlePercent[0];
var highestPercent = singlePercent[singlePercent.length-1];
var lowestAmount = singleBracket[0];
var highestAmount = singleBracket[singleBracket.length-2];

for(var i=0; i<singleBracket.length; i++){

  if(salaryInput < lowestAmount){ 
      taxes+=(salaryInput*lowestPercent);
      console.log(taxes);
  }

  else if(salaryInput > singleBracket[i] && salaryInput < singleBracket[i+1]){
    taxes+=(salaryInput-singleBracket[i])*singlePercent[i+1]; 

    for(var check = i; check>0; check--){
      var progressiveTax = (singleBracket[check]-singleBracket[check-1])*singlePercent[check];
      taxes+=progressiveTax;
    }

    taxes+=lowestAmount*lowestPercent;
    console.log(taxes);
  }
}