javascript - 如何使用字符串作为选择器在对象中设置数据?

标签 javascript arrays object set

假设我有一个全局对象,只能从一个只接受字符串的函数访问。

以下内容在函数内定义。

function setItem(string, val) {

    var scope = [{
      apple : true, 
      test : 'aa'  
    },{
      apple : false,
      test : 'bb'
    }];
    var obj = {
        'deep' : scope
    }
    obj.string = val;
    return obj.string;
});

现在我想获取第一项,并覆盖数据。

setItem('scope[0].apple', '苹果已关闭');

显然,在尝试设置变量时,上面的方法不起作用,但我想知道是否有一种方法可以评估可以包含点符号和索引选择器的字符串值?

最佳答案

可以使用eval来完成。

function setItem(string, val) {
  var scope = [{
    apple: true,
    test: 'aa'
  }, {
    apple: false,
    test: 'bb'
  }];
  var obj = {
    'deep': scope
  }
  eval(string + ' = ' + JSON.stringify(val));
  return eval(string);
};
alert(setItem('scope[0].apple', 'apple is off'));

关于javascript - 如何使用字符串作为选择器在对象中设置数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31469014/

相关文章:

php - 数组未以 pdf 格式显示在新窗口中。使用 fpdf 类

javascript - 检测对象构造函数的 onload

javascript - 无法让 JavaScript 在此页面上运行。 (在所有其他页面上工作)

javascript - 选择自动完成选项时提交表单

javascript - 如何通过 openwysiwig 外部的 javascript 代码添加文本以打开所见即所得编辑器

javascript - 条形图示例 D3

arrays - Postgres运算符不存在:

python - 如何组合元组列表中的唯一值?

javascript - 对象和 console.log 的奇怪行为

php - Laravel 如何将两个查询结果合并到一个对象中