gpt4 book ai didi

javascript - 如何在 Javascript 中用数组对象的值中的其他子字符串替换子字符串?

转载 作者:行者123 更新时间:2023-12-05 04:20:28 25 4
gpt4 key购买 nike

var temp = [
{
text:'some text and then % sign and then, again % sign',
link: 'another text with %',
},
];

我想用 \% 替换 temp 对象数组中的所有 % 符号。我该怎么做?

期望的输出:

var temp = [
{
text:'some text and then \% sign and then, again \% sign',
link: 'another text with \%',
},
];

我已经尝试了这两种方法,但是,它们都不起作用:

第一个是使用 for 循环:

for(let i = 0; i<temp.length; i++) {
temp[i].text = temp[i].text.replace(/%/g, '\\%');
temp[i].link = temp[i].link.replace(/%/g, '\\%');
}

输出:结果是两个反斜杠。

[
{
text: 'some text and then \\% sign and then, again \\% sign',
link: 'another text with \\%'
}
]

第二种方式是使用 JSON.parse 和 JSON.stringify:

temp = JSON.parse(
JSON.stringify(temp).replace(/%/g, '\\%')
);

输出:编译错误

undefined:1
[{"text":"some text and then % sign and then, again % sign","link":"another text with %"}]^

SyntaxError: Unexpected token % in JSON at position 30at JSON.parse (<anonymous>)at Object.<anonymous> (/tmp/bRVTxjVcfu.js:62:15)at Module._compile (internal/modules/cjs/loader.js:778:30)at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)at Module.load (internal/modules/cjs/loader.js:653:32)at tryModuleLoad (internal/modules/cjs/loader.js:593:12)at Function.Module._load (internal/modules/cjs/loader.js:585:3)at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)at startup (internal/bootstrap/node.js:283:19)at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

最佳答案

可以切开然后重新连接:

const parsedTemp = temp.map(tempItem => Object.entries(tempItem)
.reduce((acc, [key, value]) =>
({...acc, [key]: value.split('%').join('\\%')}), {})
)

免责声明 - 尚未测试错误但逻辑合理

编辑:我忘了你需要转义反斜杠 - 它会在你的字符串中显示为 '\\%',但这是正确的。

关于javascript - 如何在 Javascript 中用数组对象的值中的其他子字符串替换子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74450279/

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