比较两个数组的元素时出现问题,如果元素匹配,则使用某些条件修改另一个数组值

我想比较x和z,如果x中的元素存在于z中,那么在温度中推送y的元素,否则在z的末端长度处在温度中推送0,并且temp应该相等。下面是我的代码---


  var x=[00,03,06,21]

        var y=[79,11,18,14]

        var temp=[]

        var z=[00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]


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

                for(j=0;j<x.length;j++){

                    if(z[i]==x[j]){

                      //  alert("hello")

                        temp.push(y[j])

                    }                  

                }

                if(z[i]!=x[j]){

                    temp.push(0)

                }

            }

            console.log(temp)

            console.log(z)


    i getting the output as -


    //temp  (29) [79, 0, 0, 0, 11, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0] 

   //z     (25) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24] 


        expected output --


        //temp (25) [79, 0, 0, 11, 0, 0, 18, 0, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  14, 0, 0, 0]

        //z    (25) [0,  1, 2, 3, 4,  5, 6,  7, 8,  9, 10,  11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 

                     24] 


红颜莎娜
浏览 72回答 1
1回答

噜噜哒

找到通用值后,需要继续执行外部循环。如果未找到,请在完成内部循环后推动。顺便说一句,不要忘记声明所有变量。var x = [0, 3, 6, 21],&nbsp; &nbsp; y = [79, 11, 18, 14],&nbsp; &nbsp; temp = [],&nbsp; &nbsp; z = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24];outer: for (let i = 0; i < z.length; i++) {&nbsp; &nbsp; for (let j = 0; j < x.length; j++) {&nbsp; &nbsp; &nbsp; &nbsp; if (z[i] === x[j]) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; temp.push(y[j]);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; continue outer;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; temp.push(0);}console.log(temp);console.log(z);没有标签的版本。var x = [0, 3, 6, 21],&nbsp; &nbsp; y = [79, 11, 18, 14],&nbsp; &nbsp; temp = [],&nbsp; &nbsp; z = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24];for (let i = 0; i < z.length; i++) {&nbsp; &nbsp; let value = 0;&nbsp; &nbsp; for (let j = 0; j < x.length; j++) {&nbsp; &nbsp; &nbsp; &nbsp; if (z[i] === x[j]) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; value = y[j];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; temp.push(value);}console.log(temp);console.log(z);最后,使用替换为替换值的对象的较短方法。var x = [0, 3, 6, 21],&nbsp; &nbsp; y = [79, 11, 18, 14],&nbsp; &nbsp; z = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],&nbsp; &nbsp; values = x.reduce((r, k, i) => (r[k] = y[i], r), {}),&nbsp; &nbsp; temp = z.map(k => values[k] || 0);console.log(temp);console.log(z);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript