猿问

Javascript代码的小小疑问

function fn(num){
   let _keyArr = ['A','B','C','D','K','Y'];
   let _valArr = num.toString().split('');
   let _obj = {};    for(let i = 0,l = _keyArr.length; i<l;i++){        //console.log(_keyArr[i]);
        for(let j = 0, l = _valArr.length; j<l;j++){            //console.log(_valArr[j]);
            _obj[_keyArr[i]] = _valArr[j];

        }

    }
  console.log(_obj);
};

fn(532694);  //为何值都是 “4”??

胡子哥哥
浏览 591回答 1
1回答

杨__羊羊

一次循环就行,第二个循环里,因为尾数是4,4总会覆盖之前的值,想要一一对应有两者做法:1.只用一个循环function&nbsp;fn(num){ &nbsp;&nbsp;&nbsp;let&nbsp;_keyArr&nbsp;=&nbsp;['A','B','C','D','K','Y']; &nbsp;&nbsp;&nbsp;let&nbsp;_valArr&nbsp;=&nbsp;num.toString().split(''); &nbsp;&nbsp;&nbsp;let&nbsp;_obj&nbsp;=&nbsp;{};&nbsp;&nbsp;&nbsp;&nbsp;for(let&nbsp;i&nbsp;=&nbsp;0,l&nbsp;=&nbsp;_keyArr.length;&nbsp;i<l;i++){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_obj[_keyArr[i]]&nbsp;=&nbsp;_valArr[i]; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;console.log(_obj); }; fn(532694);2.第二个循环里判断一下索引是否一对一function&nbsp;fn(num){ &nbsp;&nbsp;&nbsp;let&nbsp;_keyArr&nbsp;=&nbsp;['A','B','C','D','K','Y']; &nbsp;&nbsp;&nbsp;let&nbsp;_valArr&nbsp;=&nbsp;num.toString().split(''); &nbsp;&nbsp;&nbsp;let&nbsp;_obj&nbsp;=&nbsp;{};&nbsp;&nbsp;&nbsp;&nbsp;for(let&nbsp;i&nbsp;=&nbsp;0,l&nbsp;=&nbsp;_keyArr.length;&nbsp;i<l;i++){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//console.log(_keyArr[i]); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(let&nbsp;j&nbsp;=&nbsp;0,&nbsp;l&nbsp;=&nbsp;_valArr.length;&nbsp;j<l;j++){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i==j){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_obj[_keyArr[i]]&nbsp;=&nbsp;_valArr[j]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;console.log(_obj); }; fn(532694);其实一次就可以了,之所以给出第二个方法是想表达只有在索引是一对一的情况下才是你想要的结果,如果没有 i==j,那么在第二个循环里最后的4始终会覆盖前面的值,这就是为什么值都是4的原因。加个判断,或者,就用一个循环,索引都是i 即可。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答