gpt4 book ai didi

javascript - 如何动态地将数组值作为对象属性传递?

转载 作者:行者123 更新时间:2023-11-30 19:39:15 25 4
gpt4 key购买 nike

我需要将数组值视为对象的 Prop 。例如:

let arr = ['masa_icerik', 'urunler', 0, 'urun_adet'];
let obj = {
"_id": "5c13bd566704aa5e372dddcf",
"masa_id": 3,
"masa_numara": 3,
"masa_magaza": 1,
"masa_icon": "kola",
"masa_adi": "salon 3",
"masa_durum": 1,
"masa_icerik": {
"adisyon": "J1554745811908",
"urunler": [{
"urun_adet": 14,
"urun_fiyat": 3,
"urun_id": "5c16686b93d7b79ae6367864",
"urun_odenen": 0
}, {
"urun_adet": 1,
"urun_fiyat": 5,
"urun_id": "5c16686b93d7b79ae6367865",
"urun_odenen": 0
}]
},
"masa_acilis": "2019-04-08T17:50:12.052Z",
"masa_acan": "5c1eda01d1f4773110dd6ada"
};

我有一个像上面那样的数组和一个对象,我想做这样的事情:

let res;
arr.forEach(elem => {
res = obj[elem];
});

然后我需要得到类似的东西:

obj['masa_icerik']['urunler'][0]['urun_adet']

值的数量是来自服务器的动态值。这就是为什么我需要这样的东西。有什么办法吗?我需要更改该属性并返回更改后的对象。

最佳答案

您可以使用 forEach 循环遍历数组并将其存储到临时变量中。如果所有元素都存在,它将更改值。

let arr = ['a', 'b', 'c'];
let obj = {'a':{'b':{'c':1}}};
let newValue = "NEW VALUE";

let temp = obj;
arr.forEach((o, i) => {
if (i < arr.length - 1) temp = temp[o] || null;
else if (temp !== null && typeof temp === "object" ) temp[o] = newValue;
});

console.log(obj);


如果数组的最后一部分缺少多个多对象属性。

let arr = ['a', 'b', 'c', 'd'];
let obj = {'a': {'b': {}}};
let newValue = "NEW VALUE";

let temp = obj;
arr.forEach((o, i) => {
if (i < arr.length - 1) {
if (!temp[o]) temp[o] = {[arr[i + 1]]: {}};
temp = temp[o];
} else if (temp !== null && typeof temp === "object") temp[o] = newValue;
});

console.log(obj);

关于javascript - 如何动态地将数组值作为对象属性传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55584912/

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