从字符串路径动态更新JavaScript对象

Blo*_*sie 5 javascript path object

我试图找出是否可以使用字符串作为路径来更新JavaScript对象.

在下面的例子中,我试图找出如何使用store>book>0>price我的路径更新第一本书的价格 .

我知道我可以通过写作来访问它,data['store']['book'][0]['price']但我需要能够动态地执行此操作.我尝试过一些东西,但没有运气.有任何想法吗?

这需要适用于任何深度,而不是固定的深度


数据:

 var data = { 
      "store": {
        "book": [ 
          { "category": "reference",
            "author": "Nigel Rees",
            "title": "Sayings of the Century",
            "price": 8.95
          },
          { "category": "fiction",
            "author": "Evelyn Waugh",
            "title": "Sword of Honour",
            "price": 12.99
          }
        ],
        "bicycle": {
          "color": "red",
          "price": 19.95
        }
      }
    }
var path = "store>book>0>price"
Run Code Online (Sandbox Code Playgroud)

功能:

function updateObject(object, path, data) {
    var pathArray = path.split(">");
    // Some code here
} 
updateObject(data, path, "10.00");
Run Code Online (Sandbox Code Playgroud)

更新

正如费利克斯指出的那样,答案可以在这里找到. JavaScript对象的动态深度设置

这是我的方案的一个工作示例 http://jsfiddle.net/blowsie/Sq8j3/9/

Dan*_*anC 18

function updateObject(object, newValue, path){

  var stack = path.split('>');

  while(stack.length>1){
    object = object[stack.shift()];
  }

  object[stack.shift()] = newValue;

}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

8306 次

最近记录:

12 年,9 月 前