{anima-6ren">
gpt4 book ai didi

javascript - 在 JavaScript 对象中插入模板变量的方法

转载 作者:数据小太阳 更新时间:2023-10-29 05:29:28 24 4
gpt4 key购买 nike

我想做以下事情

var obj = {
animal: "${animal}"
};

var res = magic(obj, {animal: "cat"});

// res => {animal: "cat"}

magic是一些做肮脏工作的功能。显然obj多个键、嵌套数组等可能会更复杂。模板变量可以在这样的数组中

var obj = {
animals: ["cat", "dog", "${animal}", "cow"]
};

它可以在数组中的任何位置,所以只需执行 obj.animals[2] = "bat";不可行。

我找到了 underscore-tpl library我可以用它来实现我想要的,但我想知道是否有其他解决方案供将来引用,因为我一开始就很难找到 underscore-tpl。

我的实际用途是我有一个 config.json 文件,其中有几个声明如下

{
"task1": {
"command": "command-line-program",
"args": [
"--input", "{{input}}",
"--flag1",
"--output", "{{output}}",
"--flag2",
],
"options": {
"cwd": "path-to-working-dir"
}
}
}

我使用 JSON.parse(...) 解析这个 consig.json我调用require("child_process").spawncommand , argsoptions然而文件中声明的参数args改变很多,添加标志,重新排序等等,所以简单地做 config.task1.args[1] = "<input value>";涉及更改调用 spawn 的代码这很容易出错。

更新

基于 the accepted answer我创建了一个简单的包 ( located here ),我可以将其包含在我的项目中,请随意使用它。

最佳答案

您可以JSON.stringify 对象,然后用实际值替换您的搜索值,然后JSON.parse 结果:

function magic(o, a) {
var j = JSON.stringify(o);
for (var k in a) {
j = j.split('${'+k+'}').join(a[k]);
}
return JSON.parse(j);
}

关于javascript - 在 JavaScript 对象中插入模板变量的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31728859/

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