【问题标题】:function to get position in two arrays获取两个数组中位置的函数
【发布时间】:2018-09-15 17:57:09
【问题描述】:

在 javascript 或 EJS 中

你好,我有以下数组

ID totales: 76,76,76,78,17,37,30,177,30,177,1,2,3,5,64,30,31,35,36,17,17,37,76,1,2,3,5,35,37,33,30,31,35,36,17,17,37,17,37,35,37,80,35,37,1,2,3,5,1,2,3,5,1,2,3,5,81,76,30,31,35,36,17,1,2,3,5,81,0,76,64,61,21,22,18,24,19,26,35,37,17,37,17,37,17,37

Porcantes Totales: 70,70,100,100,70,70,85,60,100,100,66.7,100,100,50,100,70,80,70,50,90,90,40,100,66.7,100,100,50,70,90,60,30,90,60,50,60,80,40,60,60,40,60,11.1,80,80,66.7,100,100,50,66.7,100,100,50,66.7,100,100,50,0,100,40,60,40,50,70,66.7,100,100,50,100,60,0,0,50,70,70,100,70,80,60,80,80,20,50,50,70,60,50

ID propios: 30,177

我需要在“ID totales”中获得“ID propios”的位置,即 30 和 177,

为了在“Porcantes Totales”中获得相同的位置,并且可以将位置 30 和位置 177 的值相加,这由单独的部分组成并将它们存储在变量中

谢谢

在 javascript 或 EJS 中

代码是

result.forEach(function(results){ %>

                        <%long=(results.category_results.length)
                        for(i=0; i<long; i++){ %>

                            <%results.category_results[i].category_id%>
                            <%listRP.push(results.category_results[i].category_id)%>

                            <%listResPropio=listRP%>

                        <br><br><br>
                        <% } %>
                        <% }) %>

                        <%
                        listR=[]
                        listP=[]
                        allResult.forEach(function(allR){ %>

                        <%long=(allR.category_results.length)
                        for(i=0; i<long; i++){ %>

                            <%allR.category_results[i].category_id%>
                            <%listR.push(allR.category_results[i].category_id)%>
                            <%listP.push(allR.category_results[i].percentage)%>

                            <%listaResultados=listR%>
                            <%listaPorcentajes=listP%>

                        <% } %>
                        <% }) %> 


                        <%aaaa = []
                        var a
                        var b
                        %>

                        ID totales: <%=listaResultados%><br>
                        Porcantes Totales: <%=listaPorcentajes%><br>
                        ID propios: <%=listResPropio%><br>

                        <% for(i=0; i<listaResultados.length; i++){ %>
                        <% for(a=0; a<listResPropio.length; a++){ %>

                        <% if(listaResultados[i]==listResPropio[a]){  %>

                           <% a=listaResultados[i] %>

                        <%= a  %>

                        <% } %>

                        <% } %> 

                        <% } %>

【问题讨论】:

  • 值 30 和 177 有什么关系?
  • 如果我是正确的,请允许我这样做。您想在第一个数组中获取这些数字的位置,然后在第二个数组中找到该位置的值并返回数字的总和?
  • 必须是与数字匹配的所有位置还是只有第一个?
  • 需要30和117的索引位置吗?然后用索引位置来总结对应的“Porcantes Totales”?
  • 我理解正确吗?您想获取数组“ID totales”中两个数字 (30,177) 的位置,然后将数组“Porcantes Totales”中的值与相应的索引号相加。最后将它们存储在一个对象中。

标签: javascript algorithm ejs


【解决方案1】:

这应该做的工作

var ID_totales = [76,76,76,78,17,37,30,177,30,177,1,2,3,5,64,30,31,35,36,17,17,37,76,1,2,3,5,35,37,33,30,31,35,36,17,17,37,17,37,35,37,80,35,37,1,2,3,5,1,2,3,5,1,2,3,5,81,76,30,31,35,36,17,1,2,3,5,81,0,76,64,61,21,22,18,24,19,26,35,37,17,37,17,37,17,37]

var Porcantes_Totales = [70,70,100,100,70,70,85,60,100,100,66.7,100,100,50,100,70,80,70,50,90,90,40,100,66.7,100,100,50,70,90,60,30,90,60,50,60,80,40,60,60,40,60,11.1,80,80,66.7,100,100,50,66.7,100,100,50,66.7,100,100,50,0,100,40,60,40,50,70,66.7,100,100,50,100,60,0,0,50,70,70,100,70,80,60,80,80,20,50,50,70,60,50]

function ID_propios(ID){
  
  return ID.map(a=>Porcantes_Totales[ID_totales.indexOf(a)]).reduce((a,b)=>a+b)   
}

console.log(
  ID_propios([30, 177])
)

【讨论】:

  • 我认为它们应该是一个数组,这就是参数的设置方式。我创建的函数接受一个数字数组
  • 我也是这么理解的。此外,您的代码是最先进的,只有一行代码就可以解决问题。非常优雅的处理方式。
猜你喜欢
  • 2017-07-11
  • 2012-10-06
  • 2016-01-05
  • 2013-09-26
  • 2021-05-30
  • 2019-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多