2016-05-09 43 views
1

我建立一個網頁,允許客戶更改信息,然後將其傳遞給管理團隊接受前驗證。我試圖保持表格動態,只傳遞客戶更改的信息。我使用下面的函數來創建對象的數組:用javascript改變對象數組中的鍵值?

$('input, textarea, select').change(function(){ 
    var key = $(this).attr('name'); 
    var obj = {}; 
    obj[key] = $(this).val(); 
    myArray.push(obj); 
}); 

這是正常工作,但是今天我注意到,多次更改字段時,它創造了多個同名的對象。

我的問題是我怎麼才能找到動態的關鍵,並改變它的值,如果它存在於數組中?

我試着使用:

$.each(myArray, function(key, value) { 
    console.log(key, value); 
}); 

但這輸出指標,然後將完整的對象,我需要找到對象的鍵,然後更改值,如果它已經存在。

+0

推你必須檢查是否在myarray的存在對象之前。你可以使用Lodash的方法findIndex – yBrodsky

+0

我發佈了一個答案,但我想我實際上不理解你的問題。你能發表一個你希望你的對象數組是什麼樣子的例子嗎? – Shaun

回答

1

變量myArray是一個數組而不是對象,所以key只是數組中對象的索引。

要檢查是否與特定鍵的對象存在,

function getObjWithKey(myArray, key){ 
    var retVal; 
    $.each(myArray, function(index, obj) { 
     if(key != undefined && obj[key]){ 
      retVal = obj; 
      return false; 
     } 
    }); 
    return retVal;   
} 
+0

謝謝Z.Z,這實際上回答了我的問題,但我意識到我這樣做的方式毫無意義。我正在創建一個數組,然後用對象填充它,然後在將它傳遞給PHP之前將其轉換爲對象。自那以後,我只是用一個對象開始並解決了我的問題。我感謝大家的幫助。 – Goderaftw

+0

非常歡迎您! –

相關問題