2016-01-13 88 views
0
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' 
    } 
    ] 
} 

我想获取所有名称的值,然后将它们放入数组中。像:通过JavaScript获取json的所有密钥值

['john','sindy','bob','sany','susan'] 

起初,我应该了解深,浅拷贝

+3

你只需要做的所有子阵列递归。 (从技术上讲,这不是JSON。) – epascarello

回答

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);

+0

是关于深度和浅度复制的递归吗? – dukegod