亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

比較兩個數組的元素時出現問題,如果元素匹配,則使用某些條件修改另一個數組值

比較兩個數組的元素時出現問題,如果元素匹配,則使用某些條件修改另一個數組值

紅顏莎娜 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 關注
  • 82 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號