von undefined x 2
Anzeigen Ihr Array zeigt deutlich, dass es sich um eine spärliche eine ist, was bedeutet, Sie haben keine undefinierten Elemente. Sie haben einfach nicht die Schlüssel, um mit Gegenständen zu beginnen.
OK können Sie haben und wünschen richtige void 0
oder undefined
Elemente aufbewahrt werden sollen (in diesem Fall alle oben genannten Lösungen fehl) oder ein numerischer Wert 0
oder null
Objektposition (in diesem Fall die Antwort akzeptiert wird fehlschlagen).
Um ein spärliches Array in eine dichte Form zu konvertieren, wäre most efficient method eine for in
Schleife (oder Object.keys()
).
Also für spärlichen Array ist looping es am besten zu nutzen
var res = [],
a = [];
a[1] = "cars.jpg";
a[5] = null;
a[999999] = "beauty.jpg";
// [undefined × 1, "cars.jpg", undefined × 3, null, undefined × 999993, "beauty.jpg"]
function dense(a){
var r = [];
for (i in a) r.push(a[i]);
return r;
}
console.time("test");
res = dense(a);
console.timeEnd("test");
console.log(res);
Jetzt können Sie den obigen Code mit einer eleganten Filterlösung vergleichen;
var res = [],
a = [];
a[1] = "cars.jpg";
a[5] = null;
a[999999] = "beauty.jpg";
// [undefined × 1, "cars.jpg", undefined × 3, null, undefined × 999993, "beauty.jpg"]
console.time("test");
res = a.filter(Boolean);
console.timeEnd("test");
console.log(res);
So wie Sie null
sehen verschwunden ist, und es ist langsamer, da sie alle nicht vorhandenen Schlüssel überprüft. Jedoch mit for in
Schleife, die die falschen Werte oder nicht hält, ist völlig unter Ihrer Kontrolle.
was bedeutet undefined x 1? –
console.log eines Sparse-Arrays. –
Wenn Sie die Methode "delete" für Javascript-Arrays verwenden, erhalten Sie undefined x1 – ticktock