Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中,如何在给定计算条件的情况下返回数组的第一个元素?_Javascript_Arrays_Dictionary_Filter_Tuples - Fatal编程技术网

在Javascript中,如何在给定计算条件的情况下返回数组的第一个元素?

在Javascript中,如何在给定计算条件的情况下返回数组的第一个元素?,javascript,arrays,dictionary,filter,tuples,Javascript,Arrays,Dictionary,Filter,Tuples,我有两个列表,我只需要返回奇数位置的元组的第一个数目,其中元组的和大于70。示例元组:[[2,70],[3,71],[4,72],[5,73]]返回[[3],[5]] 我对第一部分的计算似乎是正确的(对元组求和,大于70并得到奇数位置),但不能让它返回它的第一个元素。你们能帮帮我吗 const range=(从,到)=>{ 设arr=[]; 对于(设i=from;i(a,b)=>fn(a,b)?a:b 常量不=(fn)=>(…参数)=>!fn(…参数) 常量greaterThan=num1=>

我有两个列表,我只需要返回奇数位置的元组的第一个数目,其中元组的和大于70。示例元组:[[2,70],[3,71],[4,72],[5,73]]返回[[3],[5]]

我对第一部分的计算似乎是正确的(对元组求和,大于70并得到奇数位置),但不能让它返回它的第一个元素。你们能帮帮我吗

const range=(从,到)=>{
设arr=[];
对于(设i=from;i(a,b)=>fn(a,b)?a:b
常量不=(fn)=>(…参数)=>!fn(…参数)
常量greaterThan=num1=>num2=>num1>num2?真:假
常量longestList=(arr1,arr2)=>arr1.length>arr2.length?arr1:arr2
常量tupla=(a,b)=>[a,b]
常量esImpar=num=>num%2!==0
常量压缩=(列表1,列表2)=>{
返回三值(非(最长列表))(范围(1,50),范围(51,80))
.map((元素,索引)=>{
返回元组(列表1[index],列表2[index])
/*返回元素*/
}) 
}
//位于奇数位置的元组
const newArray=zipped(范围(1,50),范围(51,80))
.map((元素,索引)=>{
返回元素[0]+元素[1]//返回数组元素的和
})
.filter(不大于(70))//大于70的筛选器
.filter((元素,索引)=>{//筛选奇数元素
返回esImpar(索引)
})

console.log(newArray)
您确实很接近,但是您需要稍微更改链式数组方法的顺序,并且您应该更改70以下数字的筛选器,以便它以内联方式计算总和。这样,在筛选器运行后,您仍然可以访问原始元素

例如,步骤应该是:

  • 过滤掉均匀的元素
  • 过滤掉总和低于70的元素
  • 映射每个项目以获取第一个元素
为此,您可以这样修改代码段:

const range=(从,到)=>{
设arr=[];
对于(设i=from;i(a,b)=>fn(a,b)?a:b
常量不=(fn)=>(…参数)=>!fn(…参数)
常量greaterThan=num1=>num2=>num1>num2?真:假
常量longestList=(arr1,arr2)=>arr1.length>arr2.length?arr1:arr2
常量tupla=(a,b)=>[a,b]
常量esImpar=num=>num%2!==0
常量压缩=(列表1,列表2)=>{
返回三值(非(最长列表))(范围(1,50),范围(51,80))
.map((元素,索引)=>{
返回元组(列表1[index],列表2[index])
/*返回元素*/
}) 
}
//用测试用例替换输入:
const newArray=[[2,70],[3,71],[4,72],[5,73]]
//这张地图不会帮助你,它会破坏关于特定元素的信息。
//.map((元素,索引)=>{return元素[0]+元素[1]})
//这很好,但需要内联计算总和!
//我的内联计算看起来很复杂,但没那么糟糕。
//如果你愿意,你可以把它清理干净。
.filter(item=>not(大于(70))(item.reduce((a,b)=>a+b,0))//大于70的过滤器
//很好。
.filter((元素,索引)=>{return-esImpar(索引)})
//最后,只需将每个项目映射到仅包含第一个元素的数组:
.map(元素=>[元素[0]])
console.log(newArray)
在这里(从输入开始):

[[2,70]、[3,71]、[4,72]、[5,73]]
.filter((u,i)=>i%2)//仅奇数位置中的那些
.filter(el=>el[0]+el[1]>=70)//仅限两个元素之和大于70的元素

.map(el=>[el[0]])//映射到仅包含第一个元素的数组
新数组应该包含什么?