【问题标题】:Jquery array find and replace entry on partial matchJquery数组查找和替换部分匹配的条目
【发布时间】:2016-12-29 03:07:59
【问题描述】:

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

例如:

["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 发布吗? 如果不是,我无论如何都需要重新考虑!

谢谢

更新 我正在尝试更新现有数组条目或添加新条目。

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

    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;
    });

如何真正更新数组中的值?

【问题讨论】:

  • 请提供尝试过的解决方案,为什么它们不起作用,以及预期的结果。这确实有助于我们找出您的代码的问题。谢谢!

标签: jquery arrays replace partial


【解决方案1】:

在这种情况下,我会使用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
    }
});

【讨论】:

  • 谢谢你。我正在尝试使用地图,但我总是得到一个空数组。我更新了我的问题并提供了更多详细信息。
  • 一个空数组?好吧,这对于您的代码几乎是不可能的。请编辑您的问题并添加完整代码。还有其他问题。 @汤姆
  • 嗨 - 我在这里创建了一个代码笔:http://s.codepen.io/Tom_T/debug/jAoyvv 我知道问题是什么,但不知道如何解决它。启动时数组为空。当您编辑一个字段时,该数组被填充。如果再次编辑,则需要更新数组。问题是因为如果不需要编辑,我没有将值推送到数组。即一个新条目..我不知道该怎么做!
  • 我已经完成了这项工作。在filters.map之后,我正在检查数组中是否存在该条目,如果不存在则将其推入..似乎可以满足我的需要。
猜你喜欢
  • 2023-03-17
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 2023-04-02
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多