[Javascript] Abrufen des Eigenschaftsnamens des Objekts



Answers

i bin der Name.

for(var name in obj) {
    alert(name);
    var value = obj[name];
    alert(value);
}

So könnten Sie tun:

seperateObj[i] = myObject[i];
Question

Ich habe mich gefragt, ob es in JavaScript eine Möglichkeit gibt, ein Objekt so zu durchlaufen.

for(var i in myObject) {
    // ...
}

Aber hole den Namen jeder Immobilie so.

for(var i in myObject) {
    separateObj[myObject[i].name] = myObject[i];
}

Bei Google kann ich so etwas nicht finden. Sie sagen, die Namen der Variablen mit ihnen zu übergeben, aber das ist keine Option für das, was ich erreichen möchte.

Vielen Dank für Ihre Hilfe.




Sie können leicht in Objekten iterieren

zB: wenn das Objekt var a ist = {a: 'Apfel', b: 'Ball', c: 'Katze', d: 'Puppe', e: 'Elefant'};

Object.keys(a).forEach(key => {
   console.log(key) // returns the keys in an object
   console.log(a[key])  // returns the appropriate value 
})



Diese Lösungen funktionieren auch.

// Solution One
function removeProperty(obj, prop) {
  var bool;
  var keys = Object.keys(obj);
  for (var i = 0; i < keys.length; i++) {
    if (keys[i] === prop) {
      delete obj[prop];
      bool = true;
    } 
  }
  return Boolean(bool);
}


//Solution two
function removeProperty(obj, prop) {
  var bool;
  if (obj.hasOwnProperty(prop)) {
      bool = true;
      delete obj[prop];
  }
  return Boolean(bool);
}



In ES5

ZB hast du diese Art von Objekt:

var ELEMENTS = {
    STEP_ELEMENT: { ID: "0", imageName: "el_0.png" },
    GREEN_ELEMENT: { ID: "1", imageName: "el_1.png" },
    BLUE_ELEMENT: { ID: "2", imageName: "el_2.png" },
    ORANGE_ELEMENT: { ID: "3", imageName: "el_3.png" },
    PURPLE_ELEMENT: { ID: "4", imageName: "el_4.png" },
    YELLOW_ELEMENT: { ID: "5", imageName: "el_5.png" }
};

Und jetzt, wenn Sie eine Funktion haben wollen, die, wenn Sie '0' als Parameter übergeben - um 'STEP_ELEMENT' zu bekommen, wenn '2' um 'BLUE_ELEMENT' zu bekommen und so für

function(elementId) {
    var element = null;

    Object.keys(ELEMENTS).forEach(function(key) {
        if(ELEMENTS[key].ID === elementId.toString()){
            element = key;
            return;
        }    
    });

    return element;
}

Dies ist wahrscheinlich nicht die beste Lösung für das Problem, aber es ist gut, Ihnen eine Idee zu geben, wie es geht.

Prost.




Um die Eigenschaft des Objekts oder den "Array-Schlüssel" oder "Array-Index" abhängig von Ihrer Muttersprache abzurufen, verwenden Sie die Methode Object.keys ().

Wichtig, das ist nur kompatibel mit "Moderne Browser":

Also, wenn Ihr Objekt aufgerufen wird, myObject ...

var c = 0;
for(c in myObject) {
    console.log(Object.keys(myObject[c]));
}

Walla! Dies wird definitiv in den neuesten Firefox und ie11 und Chrome funktionieren ...

Hier finden Sie eine Dokumentation unter MDN Object.keys():




Links