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 🙂
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
Vous devez vous connecter pour publier un commentaire.
Comme les commentaires le disent, vous ne pouvez pas avoir plusieurs propriétés avec le même nom.
Ce que vous pouvez faire pour ajouter le passe-temps de la valeur à la même passion de la propriété et de le diviser lorsque vous avez besoin de tous vos loisirs:
OriginalL'auteur Misters
Double de
Comment puis-je stocker plusieurs valeurs par clé dans une table de hachage à l'aide de Node.JS?
Vous devez utiliser {clé, [array]}, qui est hashmap avec le tableau que la valeur et de l'écriture méthode personnalisée pour push et pop.
Vous êtes à la recherche pour knockoutjs de liaison des cases à cocher solution? stackoverflow.com/questions/18062306/... Évitez les [] dans le nom. Ce n'est pas une bonne pratique.
Non je n'ai pas besoin des cases à cocher lier directement observables, il sera automatiquement allumer ma getTasksFromServer fonction sans utilisateur manuellement (clic) soumettre le formulaire.
OriginalL'auteur sbjumani
Vous ne peut pas ajouter/ajouter des mêmes touches avec les valeurs de la différence à l'intérieur d'un objet, mais vous pouvez ajouter et extra-clés comme le code ci-dessous. En faisant cela, vous pouvez différencier les mêmes touches :
Salut Fariz Azmi, Vous ne jamais ajouter/ajouter même clé/valeur dans n'importe quel objet. Je pense que la solution ci-dessus que j'ai de ping. va vous aider. Parce que quelques jours avant, j'ai été confrontée au même problème auquel vous êtes confrontés aujourd'hui. J'ai essayé ce code et il m'a aidé.
OriginalL'auteur iNikkz