2016-11-04 3 views
0

Ich bin neu in javascript.Ich versuche ein Array mit Schlüsselwertpaar zu bauen, und ich habe das erfolgreich gemacht.Ermitteln Sie doppelte Schlüssel und ersetzen Sie ihren Wert innerhalb eines Arrays in Javascript

Dies ist meine aktuelle Ausgabe:

My current Output:

Nun, was ich will, ist der Schlüssel für jedes Objekt zu überprüfen, in dem array.If der Schlüssel bereits vorhanden ist, dann wird der Wert für den entsprechenden Schlüssel wird aktualisiert Andernfalls wird ein neuer Schlüssel mit seinem Wert eingefügt.

Mein Code:

function pushToAry(name, val) { 
//alert("In the array"); 
var flag=1; 
    kony.print("name-->"+name+" val-->"+val); 
    for (var i in ARY) { 
    kony.print("ARY[i].name-->"+ARY[i].name+" ARY[i].val-->"+ARY[i].val); 
    if (ARY[i].name == name) { 
    kony.print("In if"); 
     ARY[i].val = val; 
     flag=0; 
     break; //Stop this loop, we found it! 

    }else{ 
     kony.print("In else"); 
    } 
    } 


    if(flag==1){ 
    kony.print("flag is 1-->"+flag); 
    var obj = {}; 
    obj[name] = val; 
    ARY.push(obj); 
    } 
} 

Mein obiger Code funktioniert nicht. ARY [i] .name und ARY [i] .val kommt undefined.

ARY ist ein globales Array definiert als ARY=[];

was falsch mache ich hier?

+1

arbeiten. Sie haben ein Array von Objekten mit je 1 Eigenschaft. Es hört sich so an, als ob Sie das eigentlich tun möchten, aber ein Javascript-Objekt lässt Sie nativ sehr ähnlich machen: 'var foo = {}; foo [name] = val; ' – Tibrogargan

+0

Bitte schauen Sie in diesen Post -> http://stackoverflow.com/a/1988361/4361743 – karman

+0

Downvoter Pflege zu erklären? – kgandroid

Antwort

1

Ihre Datenstruktur ein wenig seltsam ist Dies sollte

function pushToAry(name, val) { 
 
     for (var i = 0; i < ARY.length; i++) { 
 
      if (ARY[i].hasOwnProperty(name)) { 
 
       ARY[i][name] = val; 
 
       return; 
 
      } 
 
     } 
 
    
 
     var obj = {}; 
 
     obj[name] = val; 
 
     ARY.push(obj); 
 
    } 
 

 
    function init() { 
 
     ARY = []; 
 
     pushToAry("Label", 1000.0); 
 
     pushToAry("Label", 1000.1); 
 
     console.log(`ARY has ${ARY.length} entries`); 
 
     console.log(`ARY[0].Label: ${ARY[0].Label}`); 
 
    } 
 

 
    document.addEventListener("DOMContentLoaded", init, false);

+0

lassen Sie mich versuchen ... – kgandroid

+0

geben Kompilierungsfehler Parse Fehler. fehlt; nach For-Loop-Initialisierer in der Zeile für (lassen Sie Elem von ARY) – kgandroid

+0

Ich glaube, Sie haben einen Tippfehler, funktioniert das Snippet. – Tibrogargan

Verwandte Themen