Jquery数组在部分匹配时查找和替换条目

时间:2016-08-22 14:05:46

标签: jquery arrays replace partial

我有一个像这样的数组,包含如下数据:[mode:id:A:B]

例如:

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

无论如何我可以检查并查看id和remove then条目是否存在部分匹配并替换它?

例如:

匹配1471872633890并将整个条目匹配替换为edit:1471872633890:8845:NE,以便数组变为:

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

顺便说一下......你能为ajax发布序列化数组吗? 如果不是,我还是需要重新考虑这个!

由于

更新 我试图更新现有的数组条目或添加新条目。

这就是我所拥有的......

    var id = $(this).closest('tr').find('input[name="id[]"]').val()
    var A = $(this).closest('tr').find('input[name="A[]"]').val()
    var B = $(this).closest('tr').find('input[name="A[]"]').val()
    var res = 'edit:' + id + ':' + A + ':' + B;

    filters = filters.map(function(value) {
    if( value.indexOf(id) > -1 ) {
        return res;
    }
        return value;
    });

如何实际更新数组中的值?

1 个答案:

答案 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);
&#13;
&#13;
&#13;

如果使用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
    }
});