Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将数组值作为对象属性动态传递?_Javascript_Arrays_Object - Fatal编程技术网

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您可以尝试第二个代码段,我需要返回具有更改值的原始对象。