首页 > javascript 创建二维数组,赋值中出现undefined

javascript 创建二维数组,赋值中出现undefined

var L = new Array(),
R = new Array();
var msg64 = "1010101111001101011001111000100111101111000000010010001101000101";
var tmp_L = msg64.substr(0, 32),
tmp_R = msg64.substring(32);
L[0] = [],
R[0] = [];

for (let i = 0; i < 32; i++) {
    L[0][parseInt(i / 4)] += tmp_L[i];
    R[0][parseInt(i / 4)] += tmp_R[i];
}
console.log(L[0]);
console.log(R[0]);

尝试过判断每个二维第一个,先赋值,实践之后依然存在undefined,很不解.请问是否有解决办法~


  for( let i = 0; i < 8; i++){   //REMOVE undefined
    L[0][i] = L[0][i].replace(/undefined/,'');
    R[0][i] = R[0][i].replace(/undefined/,'');
  }

尝试了一个办法,直接正则替换,强行去掉undefined字样...感觉也不是什么正统方法


var L = new Array(),
R = new Array();
var msg64 = "1010101111001101011001111000100111101111000000010010001101000101";
var tmp_L = msg64.substr(0, 32),
tmp_R = msg64.substring(32);
L[0] = [],
R[0] = [];
for (let i = 0; i < 32; i++) {
    **if (L[0][parseInt(i / 4)] === undefined) {
        L[0][parseInt(i / 4)] = '';
        R[0][parseInt(i / 4)] = '';
    }**
    L[0][parseInt(i / 4)] += tmp_L[i];
    R[0][parseInt(i / 4)] += tmp_R[i];
}

在你的循环体内,你循环的时候,第一项、第二项、第三项....第八项的没有初始值即undefined,所以每次拼接字符串的时候前面都有undefined。不知道说的清楚吗,希望能帮到你


L[0][parseInt(i / 4)] = (L[0][parseInt(i / 4)] || '') + tmp_L[i];
R[0][parseInt(i / 4)] = (R[0][parseInt(i / 4)] || '') + tmp_R[i];

楼上说得对

【热门文章】
【热门文章】