Ich bin ein Anfänger in JS und versuche nur zu verstehen, was in unten Code vorgeht. Wahrscheinlich ist es etwas dummes aber - naja, wie ich schon sagte, ich bin ein Anfänger;)Seltsames Verhalten von Array - kann nicht verstehen, warum
Zuerst ist es nur Split-Array, die ein Argument der makeFriendlyDates(['2016-07-01', '2016-08-04']);
Funktion ist.
Also, in diesem Stadium sieht alles gut aus. Jedoch, wenn ich function changeToFriendly(arr1);
rufe, das nur Grund besteht, Zahlen in Monatsnamen zu ändern, ändert es irgendwie newArr
ebenso.
Also, wenn ich diese Zeile aus kommentieren: //changeToFriendly(newArr);
dann ist newArr
was sein sollte, aber wenn die changeToFriendly(newArr);
genannt wird, um es ändert sich irgendwie newArr
statt Monatsnamen nur zurück.
Meine Frage ist, wie changeToFriendly(newArr);
kann newArr
ändern, wenn die Funktion nichts mit dem Array tun, nur durchqueren und die Nummer mit Monatsnamen überprüfen.
function makeFriendlyDates(arr) {
var newArr = [];
var elem;
for (elem in arr) {
newArr.push(arr[elem].split('-'));
}
document.getElementById('result').innerHTML = newArr;
function changeToFriendly(arr1) {
var month = '';
var elem1;
for (elem1 in arr1) {
if (arr1[elem1][1] = '01') {
month = 'January';
} else if (arr1[elem1][1] === '02') {
month = 'February';
} else if (arr1[elem1][1] === '03') {
month = 'March';
} else if (arr1[elem1][1] === '04') {
month = 'April';
} else if (arr1[elem1][1] === '05') {
month = 'May';
} else if (arr1[elem1][1] === '06') {
month = 'June';
} else if (arr1[elem1][1] === '07') {
month = 'July';
} else if (arr1[elem1][1] === '08') {
month = 'August';
} else if (arr1[elem1][1] === '09') {
month = 'September';
} else if (arr1[elem1][1] === '10') {
month = 'October';
} else if (arr1[elem1][1] === '11') {
month = 'November';
} else if (arr1[elem1][1] === '12') {
month = 'December';
}
}
document.getElementById('result1').innerHTML = newArr;
return month;
}
changeToFriendly(newArr);
}
makeFriendlyDates(['2016-07-01', '2016-08-04']);
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Title</title>
</head>
<body>
<p id="result"></p>
<p id="result1"></p>
</body>
</html>
'for..in' ist für Schleifenobjekte, nicht für Arrays; Sie möchten eine normale 'for'-Schleife. – elclanrs
Ist Array auch kein Objekt? – S1awek
Dies ist ein sehr einfacher Fehler zu machen. 'for ... in' ist in seiner Bedeutung fast täuschend. – Amy