为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红颜莎娜 2022-08-04 10:39:18
我想比较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] 
查看完整描述

1 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

找到通用值后,需要继续执行外部循环。如果未找到,请在完成内部循环后推动。


顺便说一句,不要忘记声明所有变量。


var x = [0, 3, 6, 21],

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

    temp = [],

    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++) {

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

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

            temp.push(y[j]);

            continue outer;

        }

    }

    temp.push(0);

}

console.log(temp);

console.log(z);


没有标签的版本。


var x = [0, 3, 6, 21],

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

    temp = [],

    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++) {

    let value = 0;

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

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

            value = y[j];

            break;

        }

    }

    temp.push(value);

}

console.log(temp);

console.log(z);


最后,使用替换为替换值的对象的较短方法。


var x = [0, 3, 6, 21],

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

    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],

    values = x.reduce((r, k, i) => (r[k] = y[i], r), {}),

    temp = z.map(k => values[k] || 0);


console.log(temp);

console.log(z);


查看完整回答
反对 回复 2022-08-04
  • 1 回答
  • 0 关注
  • 71 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号