gpt4 book ai didi

javascript - 在 NodeJS 中查找和替换的更简洁方法?

转载 作者:行者123 更新时间:2023-12-01 00:54:29 25 4
gpt4 key购买 nike

我当前正在尝试读取文件,将内容和多个数组传递给函数;使用正则表达式查看是否有任何匹配,然后替换并最后更新。

我整理的看起来丑陋且笨拙的代码是这样的:

find_and_replace: function(file, ...items) {
let str = _.clone(file);
let valid = {};
let do_escape = true;
let hit;
if (items != null ? items.length : void 0) {
for (let i = 0, len = items.length; i < len; i++) {
let obj = items[i];
try {
for (k in obj) {
let v = obj[k];
if (valid[k] == null) {
valid[k] = v;
}
}
} catch (error) { }
}
try {
str = str.replace('/{{([\s\S]+?)}}/g', function(a, b) {
if (hit = valid[b]) {
if (do_escape) {
return escape(hit);
} else {
return hit;
}
}
return '';
});
} catch (error) {
console.log(error);
}
}
return str;
},

该函数的使用如下:

for (let _i = 0, _len = files.length; _i < _len; _i++) {
let x = files[_i];
if(x.includes('node_modules')) {
continue;
}
builder.find_and_replace(builder.read_file(x), main_config, second_config);
break;
}

这个“系统”的功能是从文件中查找任何 {{tag}} 占位符,并用 ...items 中的正确键替换> 组合数组

如果有人能指出我正确的方向以减少所需的代码量,我将不胜感激。

最佳答案

一些简化可能包括使用Object.entriesArray.reduce方法

function find_and_replace(file, ...items) {
let str = _.clone(file);
let do_escape = true;
let hit;

if (items != null ? items.length : void 0) {
const valid = items.reduce((valid, obj) => {
Object.entries(obj)
.map([k, v] => {
valid[key] = v;
});
return valid;
}, {});

try {
str = str.replace('/{{([\s\S]+?)}}/g', (a, b) => hit === valid[b] ? (do_escape ? escape(hit) : hit) : '');
} catch (error) {
console.log(error);
}
}
return str;
},

关于javascript - 在 NodeJS 中查找和替换的更简洁方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56700858/

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