如何在jquery中动态更新Json对象值?

时间:2017-07-26 05:56:46

标签: javascript jquery json

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" 
     }
];

4 个答案:

答案 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

现在将问题分成几部分,你需要

  1. 更新对象的属性:How to set a Javascript object values dynamically?
  2. 但您需要更新所有内容:How do I loop through or enumerate a JavaScript object?
  3. 但这些对象位于数组中:Loop through an array in JavaScript
  4. 但为什么我有不同的机制来循环对象和数组? for无法获取密钥,但我们可以在数组上使用for..in。对? ,你不应该。 Why is using "for...in" with array iteration a bad idea?
  5. 自述文件链接:

    请参阅以下链接并检查浏览器兼容性,因为该解决方案无法在旧版浏览器中使用。还有其他循环方式,在上面的链接中突出显示。在使用它们之前,请参考它们的兼容性。

答案 1 :(得分:0)

您可能希望混合使用forEachObject.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;
&#13;
&#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;
});