首页 > 解决方案 > 如何将嵌套对象转换为数组

问题描述

我正在尝试将嵌套对象转换为数组

下面是我正在尝试的示例 const object1 = { a: 'somestring', b: 42, c: { d : "y" } };

我希望我的结果是 [a,b,cd](需要的键不是 vlaues)

标签: javascript

解决方案


如果您想将最远的值放入对象中,那么就像:

function walkRecursive(walkable, walkFunc){
  if(typeof walkable === 'object'){
    let v;
    if(walkable instanceof Array){
      for(let i=0,l=walkable.length; i<l; i++){
        v = walkable[i];
        if(typeof v === 'object'){
          walkRecursive(v, walkFunc);
        }
        else{
          walkFunc(v, i, walkable);
        }
      }
    }
    else{
      for(let i in walkable){
        v = walkable[i];
        if(typeof v === 'object'){
          walkRecursive(v, walkFunc);
        }
        else{
          walkFunc(v, i, walkable);
        }
      }
    }
  }
  return 
}
const a = [];
walkRecursive({a:'somestring', b:42, c:{d:'y'}}, (v, i, o)=>{
  console.log('object: '+o);
  console.log('property: '+i);
  console.log('value: '+v);
  console.log('+++++++++++++++++++++++++++++++++++++++++++');
  a.push(v);
});
console.log('-------------------------------------------');
console.log(a);


推荐阅读