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 即可。
添加回答
举报
0/150
提交
取消