javascript - 替换对象和数组中的元素?
问题描述
如果我从对象 y 中提取,例如“JPY 20, USD 20”,我想用扩展名 DOLLAR 和 JEN 替换 USD 和 JPY 的缩写。它必须看起来像这样:“JPY 20, USD 20”替换为“JEN 20, DOLLAR 20”
var x = {
'U': 'DOLLAR',
'J': 'JEN',
'E': 'EURO'
};
var y = [
'U 50',
'J 20, U 20',
'E 20, J 10'
];
var z = y[Math.floor(Math.random() * y.length)]; //example 'JPY 20, USD 20'
for(var key in x) {
var c = new RegExp({key}, "g");
z = z.replace(key, x[key]);
console.log(z); //It should looks like //'JEN 20, DOLLAR 20'
}
var x = { U: 'DOLLAR', J: 'JEN', E: 'EURO' },
y = ['U 50', 'J 20, U 20', 'E 20, J 10'],
z = y[Math.floor(Math.random() * y.length)],
key,
regex;
for (key in x) {
regex = new RegExp(key, "g");
z = z.replace(regex, x[key]);
}
console.log(z);
解决方案
您可以将所有字符串用于替换,并将其与管道连接以进行替代搜索并替换为新值。
var array = ['U 50', 'J 20, U 20', 'E 20, J 10'],
replacements = { U: 'DOLLAR', J: 'JEN', E: 'EURO' },
string = array[Math.floor(Math.random() * array.length)],
regex = new RegExp(Object.keys(replacements).join('|'), "g");
string = string.replace(regex, key => replacements[key]);
console.log(string);
推荐阅读
- windows - Windows 1903 中的英特尔 HAXM 安装失败
- python - Python (None) 是 None 但 () 不是 None
- windows - 如何禁用 bcdedit 调试?
- python - 如何在python中打印十六进制而不转换为int?
- python - 如何获取外键相关模型的计数
- android - Android 应用从 Google Play 暂停,无法恢复
- python - 是否可以将 SQLAlchemy 与 AWS RDS 数据 API 一起使用?
- reactjs - this.props.history.push() 似乎不再适用于 React Router v4,有什么替代方案?
- javascript - 指定一个我可能不会在 Vue.js 的动态组件中使用的值会降低性能吗?
- python - 无法在覆盖保存方法中设置多对多关系