Tengo una matriz multidimensional. Y quiero que sea una sola matriz. También encontré una solución en el código php. Código Php a continuación
$array = [ 'pg1' => '23', 'pg_123'=> '342443', 'pg_1_2' => '25', 'pg-123' => 'test', 'pg321' => 'grgerhgre', ]; function makeFlatParamsArray($arrParams, $parent_name = '') { $arrFlatParams = []; $i = 0; foreach ($arrParams as $key => $val) { $i++; $name = $parent_name . $key . sprintf('%03d', $i); if (is_array($val)) { $arrFlatParams = array_merge($arrFlatParams, makeFlatParamsArray($val, $name)); continue; } $arrFlatParams += array($name => (string)$val); } return $arrFlatParams; } $newArr = makeFlatParamsArray($array); echo $newArr;Salida: pg1001 23; pág_123002 342443; pg_1_2003 25; prueba pg-123004; pg321005 grgerhgre;
Cómo convertir el código php anterior a javascript. ¿Me puedes ayudar?
Esto debería dar el resultado esperado:
const padZeros = (num, places) => String(num).padStart(places, '0'); inputArray = { pg1: '23', pg_123: '342443', pg_1_2: '25', 'pg-123': 'test', pg321: 'grgerhgre', }; var resultArray = []; var index = 0; for (var key in inputArray) { resultArray.push(key + padZeros(++index, 3) + ' ' + inputArray[key]); } console.log('result', resultArray) // OK O, una versión más compacta, usando Object.keys y reduce :
var resultArray = Object.keys(inputArray).reduce((acc, key, i) => { acc.push(key + padZeros(i + 1, 3) + ' ' + inputArray[key]); return acc; }, []); console.log('result', resultArray) // OK