javascript - 如何使用数组获取对象中的内容?

标签 javascript arrays

我想改变一个对象的值,但是这个对象是嵌套的,就像这样

Obj = {
  'a': {
    'b': {
      'c': {
        'name': 'bob'
      }
    }
  }
}

还有一个数组:
['a','b','c']
我想用这个数组获取 name
如何将此数组更改为 obj['a']['b']['c']['name']
一定要考虑嵌套对象的不同层次? 我该怎么做?

最佳答案

或者在纯 javascript 中:

['a','b','c', 'name' ].reduce(function( t , v ){ return t[v];} , Obj)

el = document.getElementById('dbg');
var json = function(val){ return JSON.stringify(val) };
var log = function(val){el.innerHTML += '<div><pre>' + val + '</pre><div>'}

/****************************************************************/

var Obj = {
  'a': {
    'b': {
      'c': {
        'name': 'bob'
      }
    }
  }
}


var keyPath = ['a','b','c', 'name' ];

var result = keyPath.reduce(function( transformed , value){
  
  return transformed[value];
  
} , Obj)

log( 'result\t : ' +  result  )

/***************************************************************/

// we can do also something like that :

var Obj2 = {
  'a': {
    'b': {
      'c': {
        'name': ['bob' , 'marc' , 'jane' , 'lisa']
      }
    }
  }
}

var keyPath2 = 'a.b.c.name.2'

var result2 = keyPath2.split('.').reduce(function( transformed , value){
  
  return transformed[value];
  
} , Obj2)

log( 'result2\t : ' + result2 )

/***************************************************************/
// and using it in a function

var ns = function( keyPath , context , splitter){
  var _keyPath = keyPath.split(splitter|| '.');
  
  return _keyPath.reduce(function( transformed , value){
  
    return transformed[value];
  
  } , context)
  
};

var keyPath3 = 'a.b.c.name.3'; 
var result3 = ns( keyPath3 , Obj2 );

log( 'result3\t : ' + result3)
<div id='dbg'><div>

关于javascript - 如何使用数组获取对象中的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33052894/

相关文章:

javascript - 我不明白为什么变量 y 等于 4?

javascript - 如何将对象数组展平为每个对象参数的数组?

javascript - 如何过滤/搜索多个子数组?

javascript - JS 不工作。引用正确,但不工作

javascript - 从 Webpack 的 require.context 中排除文件

javascript - 引用对象方法时是否应将其存储在变量中? (JavaScript)

c++ - 如何在 char 数组的特定索引处获取实际值

javascript - 将字符串分隔符更改为反引号 : possible impact?

c - 使用分治法获得数组的第二大元素

java - 检查输入到数组中的输入是否正确/不正确