如何在声明的对象中添加具有相同键名的新属性?

如何在声明的对象中追加/添加具有相同键名的新属性?

这里的代码:

// 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' } ]; 

到目前为止我一直在尝试:

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

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

结果仍然两者都不起作用。 它只是取代现有的财产价值

我需要的是这样的事情:

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

请注意:我不想制作数组: hobby: ['reading', 'writing']

更新:

我实现了这个搜索function,上面的代码和细节是我被卡住的部分的简化版本。

这是我试图完成的完整代码:

我的意见:

 

我的viewmodels:

 // 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); } 

所以,ajax会请求这样的东西:

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

有人,请帮忙,谢谢:)

正如评论所说,您不能拥有同名的多个属性。

你可以做什么来将爱好值添加到同一个爱好属性中,并在你需要所有爱好时拆分它:

 var person = { hobby: "programmer" }; // adding another hobby person.hobby =+ "-secretary"; var hobbies = person.hobby.split("-"); // [programmer,secretary] 

重复

如何使用Node.JS在哈希表中为每个键存储多个值?

你必须使用{key,[array]}这是hashmap with array作为值,并编写自定义方法来推送和弹出。

不能在对象内添加/追加具有差异值的相同键 ,但您可以添加和添加额外的键,例如下面的代码。 通过这样做,您可以区分相同的键

 // Declared object var myObject = { name : 'John', age : 15, }; // Array list of new property need to be add to myObject var others = [ {0 : { key : 'hobby', value: 'reading' }}, {1 :{ key : 'hobby', value: 'writing' }} ];