簡體   English   中英

如何覆蓋數組中的對象屬性?

[英]How do I overwrite object properties in an array?

我想用數據覆蓋某些allOrders [i],類似於我創建一個新的方法。 由於某種原因,我不知道要搜索什么。

我有一個對象數組allOrders。

我有一個對象BusinessCard。 我采用表單字段,對它們進行serialize(),使用正則表達式清理數據,然后將它們壓入數組。

allOrders.push(new BusinessCard(currentOrder.quantity, currentOrder.FullName, currentOrder.Title, currentOrder.CellNumber, currentOrder.OfficeNumber, currentOrder.FaxNumber, currentOrder.EmailAddress, currentOrder.Address, currentOrder.website, currentOrder.price));

我嘗試搜索覆蓋數組等中的現有對象屬性,但沒有弄清楚該怎么做。

我最好的猜測是allOrders [i] .push,但是在我看來,我必須編寫一個新函數來替換對象中的每個屬性。

現在我正在使用(因為在表單輸入上使用serialize()根本對我沒有幫助:

allOrders[i].quantity = $('#bcQuantity').val();
allOrders[i].fullname = $('#fullName').val();
allOrders[i].title = $('#Title').val();
allOrders[i].cell = $('#CellNumber').val();
allOrders[i].office = $('#OfficeNumber').val();
allOrders[i].fax = $('#FaxNumber').val();
allOrders[i].email = $('#EmailAddress').val();
allOrders[i].address = $('#Address').val();
allOrders[i].website = $('#website').val();
allOrders[i].price = $('#bcCostBeforeCart').text();

必須有一種更聰明的方式來做到這一點。 謝謝。

編輯:

function getFormData(formId) {
    var currentForm = '#' + formId;
    var currentPrice = $('#bcCostBeforeCart').text();
    var currentFormData = $(currentForm).serialize();
    var currentFormDataFinal = currentFormData + '&price=' + currentPrice;
    return JSON.parse('{"' + decodeURI(currentFormDataFinal.replace(/\+/g, " ").replace(/&/g, "\",\"").replace(/=/g, "\":\"")) + '"}');
}

含義我可能正在使用currentOrder = getFormData('businessCardForm'); 然后allOrders [i] = currentOrder;

似乎很奇怪,您將使用選擇器來更新所有項目,但是我會總結一下獲取更新的訂單信息,然后就可以循環運行。

根據您的輸出,只要它能輸出訂單對象的相應屬性和值,您就可以執行以下操作:

for(int i =0; i < allOrders.length; i++){
   var currentFormId = '' // update this for each iteration.    
   allOrders[i] = getFormData(currentFormId);
} 




allOrders[i] = getUpdatedOrder();

function getUpdatedOrder() {
   var order = {};
   order.quantity = $('#bcQuantity').val();
   order.fullname = $('#fullName').val();
   order.title = $('#Title').val();
   order.cell = $('#CellNumber').val();
   order.office = $('#OfficeNumber').val();
   order.fax = $('#FaxNumber').val();
   order.email = $('#EmailAddress').val();
   order.address = $('#Address').val();
   order.website = $('#website').val();
   order.price = $('#bcCostBeforeCart').text();
   return order;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM