var jsonObj = [
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
},
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
];
我想更新所有对象的所有值。这里的键和值是动态的而不是key1和value1。你能帮忙搞清楚这个要求吗?
我想将每个对象的每个值设为“changedvalue”。所以更新jsonObj后的最终结果是
[
{
"key1": "changedvalue",
"key2": "changedvalue",
"key3": "changedvalue"
},
{
"key1": "changedvalue",
"key2": "changedvalue",
"key3": "changedvalue"
}
];
答案 0 :(得分:3)
jsonObj
是一个数组,因此您首先必须迭代此数组
jsonObj.forEach(o => {...});
o
现在是一个对象。你必须迭代它的键/值
for(let k in o)
k
是对象中的关键字。您现在可以更改值
o[k] = 'WhateverYouNeed'
var jsonObj = [{
"key1": "value1",
"key2": "value2",
"key3": "value3"
},
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}];
jsonObj.forEach(o => {
for(let k in o)
o[k] = 'ChangedValue'
});
console.log(jsonObj);

如上所述,您的结构是一个对象数组而不是JSON:Javascript object Vs JSON
现在将问题分成几部分,你需要
for
无法获取密钥,但我们可以在数组上使用for..in
。对? 不,你不应该。 Why is using "for...in" with array iteration a bad idea? 请参阅以下链接并检查浏览器兼容性,因为该解决方案无法在旧版浏览器中使用。还有其他循环方式,在上面的链接中突出显示。在使用它们之前,请参考它们的兼容性。
答案 1 :(得分:0)
您可能希望混合使用forEach
和Object.keys
const jsonObj = [
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
},
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
];
jsonObj.forEach( obj => {
Object.keys( obj ).forEach( key => {
const value = obj[ key ];
console.log( key, value );
} );
} );

答案 2 :(得分:0)
您可以使用解决方案https://jsfiddle.net/Lha8xk34/
var jsonObj = [{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}, {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}];
$.each(jsonObj, function(i) {
$.each(jsonObj[i], function(key) {
jsonObj[i][key] = "changed" + key;
});
});
console.log(jsonObj);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 3 :(得分:-1)
尝试pinch
在你的案例中:
var jsonObj = [
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
},
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
];
pinch(data, "/key1/", function(path, key, value) {
return (value === "value1") ? "updatedValue" : value;
});