objekt - javascript set title attribute




Objekt mit dynamischen Schlüsseln erstellen (2)

Im neuen ES2015-Standard für JavaScript (früher ES6) können Objekte mit berechneten Schlüsseln erstellt werden : Object Initializer spec .

Die Syntax lautet:

var obj = {
  [myKey]: value,
}

Wenn es auf das Szenario des OP angewendet würde, würde es zu

stuff = function (thing, callback) {
  var inputs  = $('div.quantity > input').map(function(){
    return {
      [this.attr('name')]: this.attr('value'),
    };
  }) 

  callback(null, inputs);
}

Hinweis: Für die Browserkompatibilität ist weiterhin ein Transpiler erforderlich.

Mit Babel oder Googles Traceur ist es möglich, diese Syntax heute zu verwenden .

In früheren JavaScript-Spezifikationen (ES5 und darunter) wird der Schlüssel in einem Objektliteral immer als Zeichenfolge interpretiert.

Um einen "dynamischen" Schlüssel zu verwenden, müssen Sie Klammernotation verwenden :

var obj = {};
obj[myKey] = value;

In Ihrem Fall:

stuff = function (thing, callback) {
  var inputs  = $('div.quantity > input').map(function(){
    var key   = this.attr('name')
     ,  value = this.attr('value')
     ,  ret   = {};

     ret[key] = value;
     return ret;
  }) 

  callback(null, inputs);
}

Als erstes Cheerio ich Cheerio für einige DOM-Zugriffe und Parsing mit Node.js. Gute Zeiten.

Heres die Situation:

Ich habe eine Funktion, die ich brauche, um ein Objekt zu erstellen. Dieses Objekt verwendet Variablen für seine Schlüssel und Werte und gibt dann dieses einzelne Objekt zurück. Beispiel:

stuff = function (thing, callback) {
  var inputs  = $('div.quantity > input').map(function(){
    var key   = this.attr('name')
     ,  value = this.attr('value');

     return { key : value }
  }) 

  callback(null, inputs);
}

Es gibt folgendes aus:

[ { key: '1' }, { key: '1' } ]

( .map() liefert ein Array von Objekten fyi)

Ich brauche den key um tatsächlich die Zeichenfolge von this.attr('name') .

Was ist der beste Weg, um eine Zeichenfolge als Schlüssel in Javascript zuzuweisen, in Anbetracht dessen, was ich versuche zu tun?


Sie können ein Objektliteral nicht mit einem dynamischen Schlüssel definieren. Mach das :

var o = {};
o[key] = value;
return o;

Es gibt keine Verknüpfung (bearbeiten: es gibt jetzt eine, mit ES6, siehe die andere Antwort).





object