gpt4 book ai didi

javascript - 用 'object variable' 指向 'string value' 并动态更新它?

转载 作者:行者123 更新时间:2023-12-03 04:48:04 24 4
gpt4 key购买 nike

我正在尝试实现字符串值之外的动态变量。动态变量是嵌套对象。为此我使用了 Javascript 的 eval 方法。它按我的预期工作。

更准确地说,这是示例:

var transport = [];
transport.vehicles[0].car.brake[2] = ['diskbrake','drumbrake'];
var myString = "transport.vehicles[0].car.brake[2]";
var valueOfArray = eval(myString);
console.log(valueOfArray);

在这里,控制台日志为我提供了所需的输出。但是,当我向“valueOfArray”变量添加新项目时,我需要实现“transport”变量的动态更新之类的功能。

valueOfArray.push('air brakes'); 

当我推送新值时,它还应该更新“传输”对象。

任何指导或建议都将非常感激。

谢谢。

最佳答案

使用lodash get , set 。 NPM模块link 。如果您想知道它是如何在纯 javascript 中执行操作的,请查看源代码。 get的源代码, set .

示例:

let object1 = { 'a': [{ 'b': { 'c': 3 } }] };
_.get(object1, 'a[0].b.c');
// => 3

_.get(object1, ['a', '0', 'b', 'c']);
// => 3

_.get(object1, 'a.b.c', 'default');
// => 'default'


let object2 = { 'a': [{ 'b': { 'c': 3 } }] };

_.set(object2, 'a[0].b.c', 4);
console.log(object2.a[0].b.c);
// => 4

_.set(object2, ['x', '0', 'y', 'z'], 5);
console.log(object.x[0].y.z);
// => 5

所以如果你想动态获取和设置一个数组,你可以这样做。

let object = {};
let array = _.get(object, 'transport.vehicles[0].car.brake[2]', []);
array.push('air brakes');
_.set(object, 'transport.vehicles[0].car.brake[2]', array);

JS Fiddle

关于javascript - 用 'object variable' 指向 'string value' 并动态更新它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42779567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com