首页 > 解决方案 > 修改另一个对象的一个​​对象的值,使用变量指向请求的属性

问题描述

首先,我想为使用粗略的代码片段道歉,我不太擅长缩短代码以显示问题并记住这是香草 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');
        }
    }

任何人都可以对我能做什么提供任何见解吗?我是否已经充分解释了这个问题?从字面上看,任何帮助都非常感谢。

标签: javascriptarraysobject

解决方案


推荐阅读