2017-09-09 1 views
-3

Ich habe ein Array, dass hier gibt 5mal des Eintrags der Objekte:Array Doppel Ausgang -js

function arrToString(arr){ 
    var s1 = arr[0].split(''); 
    var s2 = arr[1].split(''); 
    var output = []; 

    for(var i = 0; i < s1.length; i++){ 
    for(var x = 0; x < s2.length; x++){ 
     result.push(s1[i] + ' ' + s2[x]); 
    } 
    } 

    return output.join('\n'); 



} 

var output1 = arrToString(['Rodel','Model']); 
console.log(output1); 

// should return: 
// R M 
// o o 
// d d 
// e e 
// l l 

Statt des erwarteten Ergebnisses bin ich ein 5-fach Ausgabe bekommen:

R M 
R o 
R d 
R e 
R l 
o M 
o o 
o d 
o e 
o l 
d M 
d o 
d d 
d e 
d l 
e M 
e o 
e d 
e e 
e l 
l M 
l o 
l d 
l e 
l l 

Can jemand erklärt mir in LAYMAN'S TERM, was passiert, warum es so ausgibt? Wie repariere ich es? Tut mir leid Dummy hier.

+3

Da Sie Loops über 's1' ** und **' s2' verschachtelt haben, anstatt nur den Index zu verwenden, um den entsprechenden Wert von 's2' zu erhalten. – jonrsharpe

+1

[Rubber Duck Debug] (https://rubberduckdebugging.com) Ihr Code. – Xufox

+2

Spielcomputer. Besorgen Sie sich Papier und Bleistift und verfolgen Sie die Ausführung des Codes. –

Antwort

0
function verticallyOutput(arr) { 
    let arr1 = arr[0].split(''); 
    let arr2 = arr[1].split(''); 

    let length = (arr1.length > arr2.length) ? arr1.length : arr2.length; 

    let print = ''; 

    for (let i = 0; i < length; i++) { 
    print += 
     (arr1[i] != undefined ? arr1[i] : '*') 
    + ' ' 
    + (arr2[i] != undefined ? arr2[i] : '*') + '\n'; 
    } 

    console.log(print); 
} 

verticallyOutput(["Rodel", "Model"]); 

Wenn eine Zeichenfolge länger als die andere ist, wird anstelle eines undefinierten Zeichens ein '*' ausgegeben.
z.B. vertikalOutput ("Rodel", "Modelfigure"); => R M o o d d e e l l * f * i * g * u * r * e