2016-05-12 20 views
2

I dynamisches Array von Steuern in Javascript erstellen möchten, für die ich den folgenden Code verwendet:Dynamic Array in JavaScript

$("table").on("focusout",".tax_amount",function(e){ 
    var IDs = new Array(); 
    $('.tax_amount').each(function(){ 
     k = this.id; 
     if(typeof IDs[k] === 'undefined') { 
      IDs[k] = parseFloat(this.value);    
     }else{ 
      IDs[k]+= parseFloat(this.value); 
     } 
    }); 
    console.log(IDs);  
}); 

Jetzt möchte ich wiederholen, dass IDs Array die Tabelle zu erstellen. Aber .length & .size() funktioniert nicht auf IDs-Array. Wenn ich das Ergebnis von Array in der Konsole sehen zeigt es folgendes

enter image description here

kann nicht bekommen, wie für $ .each das Array zu verwenden.

ich gelöst habe es folgenden Code:

var IDs = {} 
    $('.tax_amount').each(function(){ 
     k = this.id; 
     if(k in IDs) { 
      IDs[k]+= parseFloat(this.value); 
     }else{ 
      IDs[k] = parseFloat(this.value);     
     } 
    }); 
    console.log(IDs.length); 
    $.each(IDs,function(key,index){ 
     console.log(key); 
     console.log(index); 
    }); 

Vielen Dank Quentin in der richtigen Richtung zu führen.

Antwort

8

size() funktioniert nicht, da Array-Objekte keine Größenmethode haben.

length funktioniert nicht, weil:

Die Länge Eigenschaft stellt eine nicht signierte 32-Bit-Ganzzahl, die immer numerisch größer als der höchste Index in dem Array ist.

Sie haben keine Indizes in das Array eingefügt.

Sie haben mit den Namen Eigenschaften hinzugefügt.

$.each funktioniert nicht, weil, wenn ein Array gegeben wird, es über die Indizes iteriert, und wieder haben Sie es nicht gegeben.

Wenn Sie benannte Eigenschaften verwenden möchten, verwenden Sie ein Objekt und kein Array. Arrays sind für numerisch indizierte und geordnete Daten ausgelegt.

+0

ok dann Array ist in meinem Fall nutzlos. Und ich brauche ein Objekt. –

+0

vielen Dank für Informationen. Es hilft mir, das Problem zu lösen. –

0

Ich hoffe, dass Ihre Anforderung ist dies

  $("table").on("focusout",".tax_amount",function(e){ 

       var IDs = new Array(); 

       $('.tax_amount').each(function(){ 
        k = this.id; 
        if(typeof k === 'undefined') { 
         IDs.push(parseFloat(this.value));   
        }else{ 
         k += parseFloat(this.value); 

         IDs.push(k); 
        } 
       }); 
       console.log(IDs);  
      }); 
0

Verwenden var arr = new Array();

then arr.push(itemValue); Elemente so viele eingeben, wie Sie

wünschen

für Iterieren durch Array und Zugriffswerte,

arr.forEach(myFunction); 
function myFunction(item, index) { 
    console.log(item); 
    console.log(index); 
}