gpt4 book ai didi

Javascript - 遍历对象并使用键/值执行文本替换

转载 作者:行者123 更新时间:2023-11-29 18:29:59 25 4
gpt4 key购买 nike

我正在开发一个接收以这种方式组织的对象的函数:{"oldID1":"newID1", "oldID2":"newID2", ... }

此信息将被送入另一个函数,该函数将在包含这些 ID 的文本区域内执行字符串替换,将 oldID1 替换为 newID1,将 oldID2 替换为 newID2 等。

这个初始对象最初来自一系列排序操作,对象键代表列表的原始顺序,对象值代表新排序的顺序。因此,例如,我会遇到一个看起来像这样的对象:

{
"1":"3",
"2":"1",
"3":"2",
"4":"4"
}

目的是将项目 3 移至列表顶部。因此,对于单独文本区域中的文本,1 应替换为 3,2 应替换为 1,3 应替换为 2。

当我尝试迭代对象并执行替换时,我遇到了问题,因为某些文本被替换了不止一次。所以“1”被“3”取代,但随后又被“2”取代。

这是我用来遍历该对象的代码:

$.each(the_object, function(key, value){   
replace_text(key,value);
});

function replace_text(old_id, new_id){
var textarea = $("#the_textarea");
var str = textarea.val();
var replace_regex = new RegExp("<pic_"+old_id+">");
str = str.replace(replace_regex, '<pic_'+new_id+'>');
the_textarea.val(str);
}

我要强调的是,排序过程独立于文本替换。我只关心找到最佳方法来执行给定我拥有的对象的文本替换。

提前致谢

最佳答案

假设包含 ID 的对象被命名为 idObj 并且它在传递给 replace 的函数的闭包中可用,我想这应该可行:

var textarea = $('#the_textarea');
textarea.val(function(i,str){
return str.replace(/<pic_(.*?)>/g,
function(m,n){
return '<pic_' + (idObj[n] || n) + '>';
});
});

这里的 n 变量将包含旧索引。我看到 idObj 的属性是以旧索引命名的,因此可以像这样检索新索引 var newIndex = idObj['oldIndex]; 并且该函数返回任何给定的旧索引。

关于Javascript - 遍历对象并使用键/值执行文本替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9390389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com