我有一個長度未知的陣列,它定義了我想在物件中更改的內容的路徑。
這就是我要的。
let updatedContent = "Hello World!";
let myArray = ["layer1","layer2","layer3"];
myObject["layer1"]["layer2"]["layer3"] = updatedContent;
我的問題是 myArray 的長度未知。更新物件中的值的最佳方法是什么?
uj5u.com熱心網友回復:
這是一種使用遞回函式的丑陋方法。這個想法是按順序檢索嵌套屬性,使用當前級別遞回呼叫函式,直到陣列末尾:
function changeObject(obj, arr, content, index = 0) {
if (index < arr.length - 1) {
changeObject(obj[arr[index]], arr, content, index);
} else {
obj[arr[index]] = content;
}
};
const myObject = {
layer1: {
layer2: {
layer3: "foo"
}
}
};
let updatedContent = "Hello World!";
let myArray = ["layer1", "layer2", "layer3"];
myObject["layer1"]["layer2"]["layer3"] = updatedContent;
changeObject(myObject, myArray, updatedContent);
console.log(myObject);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/447635.html
標籤:javascript 目的
上一篇:如何轉換陣列中的物件
