javascript - 修改另一个对象的一个对象的值,使用变量指向请求的属性
问题描述
首先,我想为使用粗略的代码片段道歉,我不太擅长缩短代码以显示问题并记住这是香草 ES5 javascript,但我会尽力而为,所以这里是:
我希望能够修改另一个对象内的对象中的属性值,我知道在我的情况下是这样的。
jsonFile[0].firstObject.secondObject.property = newValue
如果我想将它烘焙到一个函数中,我可以通过使用变量指向属性来在我的代码中的不同点重用,它会是这样的。
jsonFile[0][firstObjectPointer][secondObjectPointer][propertyPointer] = newValue
但是当我需要 3 时,我只能将一个值传递给函数,因此我选择使用一个数组来存储我需要的信息:文件名、属性指针和新值。以下是我将使用的真实示例:
// [0] file name - [1] data to change - [2] new data
["something.txt", "basicInfo.name", "Meliodas"]
当我存储用“。”分隔的指针时,我将值分开并将它们存储在一个新数组中,这就是我的问题发挥作用的地方,我需要一种放置指针的方法(数量可以不同,可以有示例中的两个甚至 5),我尝试了一些带有 for 循环的东西,但它实际上不起作用:
dataPoint 是存储分离指针的数组,dataToUpdate 是要更新的主要 JSON,理论上会一直运行到最后一个指针,然后在该点插入新值
for (i = 0; i < dataPoint.length; i += 1) {
console.log('now inside the for loop');
if (i < (dataPoint.length - 1)) {
dataToUpdate[0] = dataToUpdate[0][dataPoint[i]];
console.log(dataToUpdate);
} else if (i === (dataPoint.length - 1)) {
dataToUpdate[dataPoint] = newData;
} else {
console.log('nothing has actually worked');
}
}
任何人都可以对我能做什么提供任何见解吗?我是否已经充分解释了这个问题?从字面上看,任何帮助都非常感谢。