JavaScript:通过从字符串中检索变量名来更新对象值

发布时间:2020-01-13 发布网站:大佬教程
大佬教程收集整理的这篇文章主要介绍了JavaScript:通过从字符串中检索变量名来更新对象值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个JavaScript对象,看起来像这样.

var myObj = [
  {
    "HOLIDAY": {
      "Sun": "Date","Mon": "Date","Tue": "Date","Wed": "Date","Thr": "Date","Fri": "Date","Sat": "Date"
    }
  }
]

我有一些HTML代码,看起来像这样

    

在HTML上,如果我对该字段进行任何更改,我已经存储了要修改的JavaScript变量.我编写了类似这样的JavaScript代码.

$(document).on('change','[data-event= change]',function(){
    //get-variable-name where to bind data
    //Get object location inside the variable
    var sVarName = $(this).data('variable');
    var sObjLoca = $(this).data('bind');
    eval(sVarName+sObjLoca +' = ' $(this).val());
});

有没有更好的方法来解决这个问题,目前我使用的是eval()我不想使用,因为很多元素都会有’change’事件而show’eval’会影响我的代码的性能.

最佳答案
 // Input
var myObj = [{
  "HOLIDAY": {
    "Sun": "Date","Sat": "Date"
  }
}]

// Function
function updateObject(object,newValue,path) {
  var stack = path.replace(/\]\[/g,'.').replace(/['"\[\]]/g,'').split('.');

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

// Output
console.log(updateObject(myObj,'test1',"[0]['HOLIDAY']['Sat']"));
console.log(updateObject(myObj,'test2',"[0]['HOLIDAY']['Tue']"));

// Can also set like below
console.log(updateObject(myObj,'otherway',"0.HOLIDAY.Wed"));

大佬总结

以上是大佬教程为你收集整理的JavaScript:通过从字符串中检索变量名来更新对象值全部内容,希望文章能够帮你解决JavaScript:通过从字符串中检索变量名来更新对象值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ群:277859234,请注明来意。