通过JavaScript从json获取所有键值

duk*_*god 0 javascript json

var json={
  name: 'john',
  age: '80',
  child: [
    {
      name: 'sindy',
      age: '60',
      child: [
        {
          name: 'bob',
          age: '40',
          child: [
            {
              name: 'sany',
              age: '20'
            }
          ]
        }
      ]
    },
    {
      name: 'susan',
      age: '70'
    }
  ]
}  
Run Code Online (Sandbox Code Playgroud)

我想得到所有名称的值,然后将它们放在一个数组中.喜欢:

['john','sindy','bob','sany','susan']
Run Code Online (Sandbox Code Playgroud)

首先,我应该知道深浅的副本吗?

epa*_*llo 5

这是一个基本的递归问题.它就像检查这个人是否有子数组一样简单,而不是处理孩子.

var json={
  name: 'john',
  age: '80',
  child: [
    {
      name: 'sindy',
      age: '60',
      child: [
        {
          name: 'bob',
          age: '40',
          child: [
            {
              name: 'sany',
              age: '20'
            }
          ]
        }
      ]
    },
    {
      name: 'susan',
      age: '70'
    }
  ]
};

var names = [];  //where we will store the names
function findName (obj) {    
    names.push(obj.name);  //get the current person's name
    if(obj.child) obj.child.forEach(findName);  //if we have a child, loop over them
}
findName(json);
console.log(names);
Run Code Online (Sandbox Code Playgroud)