Jquery 数组查找并替换部分匹配项
Jquery array find and replace entry on partial match
我有一个这样的数组,其中包含如下数据:[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;
});
如何实际更新数组中的值?
在这种情况下我会使用 map
。您甚至可以使用另一个 loop
,但在这种情况下很容易处理,我喜欢这种行为。只需在内部搜索并 return 新值。
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
}
});
我有一个这样的数组,其中包含如下数据:[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;
});
如何实际更新数组中的值?
在这种情况下我会使用 map
。您甚至可以使用另一个 loop
,但在这种情况下很容易处理,我喜欢这种行为。只需在内部搜索并 return 新值。
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
}
});