Comment ajouter une nouvelle propriété avec le même nom de la clé à l'intérieur d'objet déclarée?

Comment puis-je ajouter/ajouter une nouvelle propriété avec le même nom de la clé à l'intérieur d'objet déclarée ?

Voici le code:

//Declared object
var myObject = {
    name : 'John',
    age  : 15,
};

//Array list of new property need to be add to myObject
var others = [
  { key : 'hobby', value: 'reading' },
  { key : 'hobby', value: 'writing' }
];

Ce que j'ai essayer jusqu'à présent:

ko.utils.arrayForEach(others, function(other) {
    myObject[other.key] = other.value;
});

et

ko.utils.arrayForEach(others, function(other) {
    var extendObject = new Object();
    extendObject[other.key] = other.value;

    $.extend(myObject, extendObject);
});

Le résultat à la fois ne fonctionne pas non plus. Il vient de remplacer la valeur de la propriété

Ce dont j'ai besoin est quelque chose comme ceci:

myObject: { name: 'John', age: 15, hobby: 'reading', hobby: 'writing' }

Veuillez noter: je ne veux pas faire de tableau : hobby: ['reading', 'writing']

Mise à JOUR:

J'ai été mettre en œuvre ce pour la fonctionnalité de recherche, le code et les coordonnées ci-dessus est une version simplifiée de la partie, j'ai été bloqué.

et voici le code complet de ce que j'ai essayer de faire:

mon point de vue:

<form data-bind="submit: $root.getSearchData">
  <input name="date_start" class="datepicker">

  <div class="checkbox">
    <label>
       <input type="checkbox" name="user_id[]" value="1"> John
    </label>
    <label>
       <input type="checkbox" name="user_id[]" value="2"> Michael
    </label>
  </div>
</form>

mon viewmodel:

//Will contains new search property need to append to queryData
self.searchPropertyList = ko.observableArray();

//This function will fetch tasks from server
self.getTasksFromServer = function()
{
   //Query data
   var queryData = {
       sort : 'start',
       order: 'asc'
   };

   /**
    * When getSearchData function fill formData into searchPropertyList observable,
    * this function will get a notify and it will automatically loop through it 
    * and append new property to queryData.
    */
   ko.utils.arrayForEach(self.searchPropertyList(), function(opt)
   {
       queryData[opt.name] = opt.value;
   }

   $.ajax({
       url: 'api/tasks',
       type: 'json',
       data: queryData,
       success: function(data)
       {
       }
   });
}

//Returned form property as array into searchPropertyList observableArray 
//and notify getTaskFromServer function
//This is how formData may look like
//formData = [{ name: 'date_start', value: '2014-08-26' }, { name: 'user_id[]', value: 1 }, { name: 'user_id[]', value: 2 }]; 
self.getSearchData = function(form)
{
     var formData = $(form).serializeArray();

     self.searchPropertyList(formData);
}

Donc, ajax demande quelque chose comme ceci:

api/tasks?sort=start&order=asc&date_start=2014-08-26&user_id[]=1&user_id[]=2

Quelqu'un, s'il vous plaît aider, Merci 🙂

{ clé : 'passe-temps', value: 'la lecture de l'écriture"} nad lors de la lecture de cette scission de la chaîne pour "" pour obtenir le tableau de loisirs. Pas vraiment sûr si Vous pouvez avoir 2 propriétés avec un nom.
Vous ne pouvez pas avoir plusieurs propriétés avec le même nom dans un objet.
Il n'y aura jamais deux propriétés avec le même nom dans un objet. Un tableau qui semble être votre sauveur
est-il un autre moyen pour accomplir cette ?
Oui il y a un moyen: vous avez besoin d'utiliser un tableau. Mais qu'est-ce que votre objectif final? Pourquoi un tableau n'est pas une solution pour vous?

OriginalL'auteur Fariz Azmi | 2014-08-26