Javascript 替换已解析的Json数组的所有值

Javascript 替换已解析的Json数组的所有值,javascript,arrays,json,Javascript,Arrays,Json,好吧?我在js中有一个函数,用于格式化Json值上的一些缺陷。现在这个数组必须更高,将添加更多的数据,所以for循环中有很多行。 有一个表格可以使用ES5或ES6将替换分配给阵列中的所有ITEN(使用低代码行) for (var i = 0; i<data.length; i++) { data[i]['CotacaoBase'] = data[i]['CotacaoBase'] .replace(",",

好吧?我在js中有一个函数,用于格式化Json值上的一些缺陷。现在这个数组必须更高,将添加更多的数据,所以for循环中有很多行。 有一个表格可以使用ES5或ES6将替换分配给阵列中的所有ITEN(使用低代码行)

for (var i = 0; i<data.length; i++) {
                data[i]['CotacaoBase'] = data[i]['CotacaoBase']
                .replace(",", ".")
                .replace("%", " ")
                .replace("R$", " ");                
                data[i]['DyMes'] = data[i]['DyMes']
                .replace(",", ".")
                .replace("%", "")
                .replace("R$", "");
                data[i]['pvp'] = data[i]['pvp']
                .replace(",", ".")
                .replace("%", " ")
                .replace("R$", "");
                data[i]['caixa_receber_12meses'] = data[i]['caixa_receber_12meses']
                .replace(",", ".")
                .replace("%", " ")
                .replace("R$", "");
                data[i]['caixa_receber_atual'] = data[i]['caixa_receber_atual']
                .replace(",", ".")
                .replace("%", " ")
                .replace("R$", "");
                data[i]['caixalivre_12meses'] = data[i]['caixalivre_12meses']
                .replace(",", ".")
                .replace("%", " ")
                .replace("R$", "");
                data[i]['caixalivre_hoje'] = data[i]['caixalivre_hoje']
                .replace(",", ".")
                .replace("%", " ")
                .replace("R$", "");
            }

for(var i=0;i将类似于“cotacobase”“DyMes”的值存储在一个数组中,并尝试对其进行迭代。

知道确切的键 如果你看你的代码,你可以看到7段非常相似的代码。唯一的区别是使用了字符串。对于每一种情况,你可以编写

data[i][s]=数据[i][s]
.替换(“,”,“)
.替换(“%”,“”)
.替换(“R$”,“”);
其中,
s
是七个字符串之一:
cotacobase
DyMes
,等等。这正是您应该在代码中何时使用循环的定义:一个指令块会针对稍微不同的参数重复几次

让我们收集数组中的所有字符串

const strings=['Cotacobase'、'DyMes'、…、'caixalivre_hoje']
现在让我们重复一下,有很多方法可以做到这一点,其中之一是基于C类索引的
for
-循环

for(设si=0;si
请注意,
si
是一个存储元素索引的
数字,因此我们需要首先通过执行
s=strings[si]
来获取实际字符串

还有其他的迭代方法,可以说更容易理解。我们最终根本不需要索引
si
(我们只是用它来获取
s
),所以我们可以使用
for of
循环,这允许我们完全跳过这一步

for(字符串常量){
数据[i][s]=数据[i][s]
.替换(“,”,“)
.替换(“%”,“”)
.替换(“R$”,“”);
}
请注意,此代码段和上一个代码段中仅更改了前两行

您还可以使用JavaScript中每个
数组
都可以使用的
forEach
方法

strings.forEach(s=>{
数据[i][s]=数据[i][s]
.替换(“,”,“)
.替换(“%”,“”)
.替换(“R$”,“”);
})
钥匙是未知的 如果对象中的键未知,并且您希望替换每个
s
,无论它是什么,都可以使用
对象.keys
函数。它将返回用作键的字符串数组

const object={a:1,b:2}
常量字符串=Object.keys(对象)
//字符串:['a','b']
因此,与其定义

const strings=['Cotacobase'、'DyMes'、…、'caixalivre_hoje']
你自己,你能做到

const strings=Object.keys(数据[i])
然后像我之前解释的那样继续



关于你的问题有一点离题的澄清:JSON与这个问题没有什么关系。你使用的是一个JavaScript数组,存储在变量
data
中。这个对象在内存中的具体存储方式目前与你无关,但它肯定不会存储为JSON字符串。也许你基于JSON的数据您从服务器收到的字符串,但您不再使用它。“JSON”不是“JavaScript对象”,许多混淆源于它。

这是解决此问题的一种方法

基本上,在
keystefix
中,我们存储了所有要修复的密钥

接下来在
replaceMap
中,我们将存储要替换的字符以及要替换的字符

然后,我们只是循环上述两项,并修复数据中的每个元素

现在,如果出现新的内容,只需将它们添加到
keystefix
replaceMap

const keystefix=['cotacobase'、'DyMes'、'pvp'、'caixa_receber_12eses'、'caixa_receber_atual'、'caixalivre_12eses'、'caixalivre_hoje';
常量替换映射={
",": ".",
"%": " ",
“R$”:“”
};
对于(变量i=0;i
也许这会奏效。
for(变量i=0;i
如果在将“原始”JSON字符串解析为POJO(在您的case数组中为“纯旧JavaScript对象”)之前,您可以访问该字符串,我建议您使用

它的用途正是:在解析每个键值对时调用它,并允许您根据自己的喜好修改值:

//解析JSON并获取“amount”值
var data=JSON.parse(
`[{“修复此问题”:“1,2%R$”},
{“不是这个”:“a,b%R$”}
]
`,
cleanAmountValues//← “复兴者”功能
);
函数cleanAmountValues(键、值){
//使用RegExp,只是为了简化这个示例
//您可以使用任何类型的值或键测试
变量模式=/^([0-9]*),([0-9]*)\%R\$$/;
风险值替换='1美元。'2';
if(typeof value=='string'&&pattern.test(value)){
返回值.替换(模式,替换);
}否则{
返回值
}
};
console.log(

'Result:',JSON.stringify(data,null,'\t');
太麻烦了!它对我很有用。只有三行代码..HugsThanks。很高兴听到这个消息。