Problem
I have a Multidimensional Array and a function called conversion().
let variables outside conversion()
will only be executed on every other cell
let variables inside conversion()
works properly but you have to type the exact same variable in every new function
What I'm looking for?
I would like to know why this is happening
If I knew why, then I can fix the problem
But at the moment I don't know why
Works… Kinda
Only executes function on every other cell
let MDA = [
[ '','','UndefineD','nuLL','trUe','fAlsE','TruE','FalSe','NaN','NAN'],
[ '1', '2', '3', '4', '5', 'TRUE', 'FALSE', '8', '9', '10' ],
[ 'a', 'TrUe', 'FaLsE', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ]
],
regComma = /\b(,")(.*?(?:(?!\b,".*",).)*)(",)/g,
regNumber = /^((\s+)?((-)|\.)?)?[\d\.]+(\s+)?$/g,
regBoolean = /^(\s+)?(true|false)(\s+)?$/gi,
regUndefined = /^(\s+)?(undefined|null)(\s+)?$/gi,
regNaN = /^(\s)?nan(\s)?$/gi;
function conversion(str) {
if (regNumber.test(str)) {return parseInt(str);}
if (regBoolean.test(str)) {return /t/i.test(str)?true:false;}
if (regUndefined.test(str)) {return /d/i.test(str)?undefined:null;}
if (regNaN.test(str)) {return NaN;}
return str;
}
for(var i = 0; i < MDA.length; i++) {
let cube = MDA[i];
for(var j = 0; j < cube.length; j++) {
let cell = cube[j],
convert = conversion(cell);
MDA[i][j] = convert;
}
}
console.log(MDA)
Works Properly
Inefficient due to me having to write variables
into each function I want preformed on each cell.
let MDA = [
[ '','','UndefineD','nuLL','trUe','fAlsE','TruE','FalSe','NaN','NAN'],
[ '1', '2', '3', '4', '5', 'TRUE', 'FALSE', '8', '9', '10' ],
[ 'a', 'TrUe', 'FaLsE', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ]
];
function conversion(str) {
let regComma = /\b(,")(.*?(?:(?!\b,".*",).)*)(",)/g,
regNumber = /^((\s+)?((-)|\.)?)?[\d\.]+(\s+)?$/g,
regBoolean = /^(\s+)?(true|false)(\s+)?$/gi,
regUndefined = /^(\s+)?(undefined|null)(\s+)?$/gi,
regNaN = /^(\s)?nan(\s)?$/gi;
if (regNumber.test(str)) {return parseInt(str);}
if (regBoolean.test(str)) {return /t/i.test(str)?true:false;}
if (regUndefined.test(str)) {return /d/i.test(str)?undefined:null;}
if (regNaN.test(str)) {return NaN;}
return str;
}
for(var i = 0; i < MDA.length; i++) {
let cube = MDA[i];
for(var j = 0; j < cube.length; j++) {
let cell = cube[j],
convert = conversion(cell);
MDA[i][j] = convert;
}
}
console.log(MDA)
What I've Tried
Placed the let variables outside conversion()
Created new let variables referenced to outside variables
But it only works on every other cell
let MDA = [
[ '','','UndefineD','nuLL','trUe','fAlsE','TruE','FalSe','NaN','NAN'],
[ '1', '2', '3', '4', '5', 'TRUE', 'FALSE', '8', '9', '10' ],
[ 'a', 'TrUe', 'FaLsE', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ]
],
regComma = /\b(,")(.*?(?:(?!\b,".*",).)*)(",)/g,
regNumber = /^((\s+)?((-)|\.)?)?[\d\.]+(\s+)?$/g,
regBoolean = /^(\s+)?(true|false)(\s+)?$/gi,
regUndefined = /^(\s+)?(undefined|null)(\s+)?$/gi,
regNaN = /^(\s)?nan(\s)?$/gi;
function conversion(str) {
let r1 = regComma,
r2 = regNumber,
r3 = regBoolean,
r4 = regUndefined,
r5 = regNaN;
if (r2.test(str)) {return parseInt(str);}
if (r3.test(str)) {return /t/i.test(str)?true:false;}
if (r4.test(str)) {return /d/i.test(str)?undefined:null;}
if (r5.test(str)) {return NaN;}
return str;
}
for(var i = 0; i < MDA.length; i++) {
let cube = MDA[i];
for(var j = 0; j < cube.length; j++) {
let cell = cube[j],
convert = conversion(cell);
MDA[i][j] = convert;
}
}
console.log(MDA)