Javascript 如何将数组值作为对象属性动态传递?
我需要将数组值视为对象的道具。例如:Javascript 如何将数组值作为对象属性动态传递?,javascript,arrays,object,Javascript,Arrays,Object,我需要将数组值视为对象的道具。例如: 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, "ma
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']
服务器中的值数量是动态的。这就是为什么我需要这样的东西。有办法吗?我需要更改该属性并返回已更改的对象。您可以使用
引用
这是我的想法
- 使用
引用初始化对象
val
- 循环遍历数组并将新引用设置为
val
让arr=['a','b','c'];
设obj={'a':{'b':{'c':1}};
让getMeValue=(arr)=>{
设val=obj;
arr.forEach(e=>val=val&&val[e])
返回值
}
console.log(getMeValue(arr))
log(getMeValue([1,2,3])
您可以使用forEach
循环遍历数组并将其存储到临时变量。如果所有元素都存在,它将更改值
让arr=['a','b','c'];
设obj={'a':{'b':{'c':1}};
让newValue=“newValue”;
设temp=obj;
arr.forEach((o,i)=>{
如果(i 控制台日志(obj)代码>我不完全理解您从何处获得新值,但我认为这将使您走上正确的轨道
let newObj = {};
arr.map(each => {
newObj[each] = "new value";
})
console.log(newObj);
我不确定您在这里的要求,我想您需要以下内容:
let func=(arr,value)=>{
r={};
r[arr[arr.length-1]=值;
对于(设i=arr.length-2;i>=0;i--){
obj={};
obj[arr[i]]=r;
r=obj;
}
返回r;
}
log(func(['a','b','c'],1))代码>我需要设置对象的值。我不明白。对不起,误导性的问题。<代码>边注:你应该考虑未定义的情况,我的意思是ARR输入像<代码> [1,2,3] < /Cord> @代码躁狂:是的,我的值是0。array@CodeManiac,我将发布该代码。但用户不需要第一个代码。所以不需要发布:)只需发布。:)我需要设置对象的值。我不明白。对不起,我的问题有误导性。@İsmailFurkanGÖKHASAN你什么意思?您想更改对象的值
?我需要更改对象,如obj['a']['b].['n']='someValue'
@code Maniac@İsmailFurkanGÖKHASAN您可以尝试第二个代码段,我需要返回具有更改值的原始对象。