Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改嵌套JSON对象中的值_Javascript_Jquery_Json - Fatal编程技术网

Javascript 更改嵌套JSON对象中的值

Javascript 更改嵌套JSON对象中的值,javascript,jquery,json,Javascript,Jquery,Json,我有一个像这样的JSON对象 var test = { "value1": "", "array1": { "value2": 0, "value3": 0 } } 现在我想在测试JSON中迭代array1,将值相乘,然后再次存储它们 我试过这种方法,但它不能储存它 jQuery.each(test.array1, function (i, val) { test.array1.i = val * 1.3; }); 乘法运算很好。。

我有一个像这样的JSON对象

var test = {
    "value1": "",
    "array1": {
       "value2": 0,
       "value3": 0
    }
}
现在我想在测试JSON中迭代array1,将值相乘,然后再次存储它们

我试过这种方法,但它不能储存它

jQuery.each(test.array1, function (i, val) {
    test.array1.i = val * 1.3;
});

乘法运算很好。。但是如何正确地恢复它呢?

使用
test.array1[i]
而不是像下面这样使用
test.array1.i

jQuery.each(test.array1, function (i, val) {
    test.array1[i] = val * 1.3;
});
您可以在通过使用获取的密钥数组上使用

使用:

var测试={
“价值1”:“价值”,
“阵列1”:{
“价值2”:10,
“价值3”:30
}
};
Object.key(test.array1)、forEach(function(key){
测试阵列1[键]*=1.3;
});
控制台日志(测试)这样做:

var测试={
“价值1”:“价值”,
“阵列1”:{
“价值2”:1,
“值3”:0
}
}
每个(test.array1,函数(i,val){
console.log(i,val)
test.array1[i]=val*1.3;//使用括号表示法代替test.array1.i=val*1.3
});
console.log(测试)

没有jQuery,可以这样做:

var测试={
“价值1”:“价值”,
“阵列1”:{
“价值2”:1,
“价值3”:2
}
}
用于(输入测试数组1){
测试阵列1[键]*=1.3;
}

控制台日志(测试)这是一个对象文字,而不是数组。它应该如何像我预期的那样工作?还不清楚你在问什么。您可以发布您的预期输出吗?您甚至根本不需要
val
,您可以使用
*=
。另外,一个简单的
for..in
循环是.Wow,一个简单的javascript解决方案,它与jQuery一样简洁
Object.keys(test.array1).forEach(function(key) {
    test.array1[key] *= 1.3;
});
Object.keys(test.array1).forEach(key => test.array1[key] *= 1.3);