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

Javascript代码的小小疑问

Javascript代码的小小疑问

胡子哥哥 2018-08-07 06:05:59
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”??
查看完整描述

1 回答

?
杨__羊羊

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

一次循环就行,第二个循环里,因为尾数是4,4总会覆盖之前的值,想要一一对应有两者做法:

1.只用一个循环

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++){
        _obj[_keyArr[i]] = _valArr[i];

    }
  console.log(_obj);
};

fn(532694);

2.第二个循环里判断一下索引是否一对一

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++){            if(i==j){
               _obj[_keyArr[i]] = _valArr[j];
            }
            

        }

    }
  console.log(_obj);
};

fn(532694);

其实一次就可以了,之所以给出第二个方法是想表达只有在索引是一对一的情况下才是你想要的结果,如果没有 i==j,那么在第二个循环里最后的4始终会覆盖前面的值,这就是为什么值都是4的原因。加个判断,或者,就用一个循环,索引都是i 即可。


查看完整回答
反对 回复 2018-09-09
  • 1 回答
  • 0 关注
  • 590 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信