2016-08-22 50 views
1

條目我有像這樣包含數據的數組:[模式:ID:A:B]Jquery的陣列查找和替換對部分匹配

例如:

["del:123456789:0:0", "del:99887766:0:0", "edit:1471872633890:8845:0"] 

有反正我可以檢查並查看是否有id的部分匹配,然後刪除然後輸入並替換它?

如:

比賽上1471872633890和更換整個條目匹配edit:1471872633890:8845:NE所以排列成爲

["del:123456789:0:0", "del:99887766:0:0", "edit:1471872633890:8845:NW"] 

順便說一句...你可以序列化的AJAX發佈一個數組? 如果不是我需要重新考慮這個問題!

感謝

UPDATE 我試圖更新現有陣列條目或添加新條目。

這是我得到了什麼?

​​

如何實際更新數組中的值?

+0

請包括嘗試解決方案,爲什麼他們不工作,以及預期的結果。這真的可以幫助我們找出你的代碼的問題。謝謝! –

回答

4

我會在這種情況下使用map。你甚至可以使用另一個loop,但在這種情況下很容易處理,我喜歡這種行爲。只需在裏面搜索並返回新值。

var arr = ["del:123456789:0:0", "del:99887766:0:0", "edit:1471872633890:8845:0"]; 
 

 
arr = arr.map(function(value) { 
 
    if(value.indexOf("1471872633890") > -1) { 
 
     return "edit:1471872633890:8845:NW"; 
 
    } 
 
    
 
    return value; 
 
}); 
 

 
console.log(arr);

如果你喜歡,如for循環:

var arr = ["del:123456789:0:0", "del:99887766:0:0", "edit:1471872633890:8845:0"]; 
 

 
for(var i = 0; i < arr.length; i++) { 
 
    if(arr[i].indexOf("1471872633890") > -1) { 
 
     arr[i] = "edit:1471872633890:8845:NW"; 
 
    } 
 
} 
 

 
console.log(arr);

如果你使用jQuery ajax沒有必要序列化陣列。你可以發送data屬性。

var arr = ["del:123456789:0:0", "del:99887766:0:0", "edit:1471872633890:8845:0"]; 

$.ajax({ 
    url: "foo.php", 
    method: "post", 
    data: { 
     myArray: arr 
    } 
}); 
+0

感謝這..我試圖使用地圖,但我總是得到一個空數組。我已經更新了一些更詳細的問題。 – Tom

+1

空陣列?那麼,你的代碼幾乎是不可能的。請編輯您的問題並添加完整的代碼。還有其他的錯誤。 @Tom – eisbehr

+0

嗨 - 我在這裏創建了一個codepen:'http:// s.codepen.io/Tom_T/debug/jAoyvv' 我知道問題是什麼,但不知道如何解決它。啓動時,陣列是空的。當你編輯一個字段時,數組被填充。如果再次編輯,則需要更新數組。如果不需要編輯該值,則不會將值推送到數組。即一個新的條目..我不知道該怎麼做! – Tom