2016-08-22 120 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