Javascript 将json对象的索引映射到数组

Javascript 将json对象的索引映射到数组,javascript,typescript,Javascript,Typescript,我有一个从后端API获取的复杂json对象。我想映射json对象中每个键值对的键。我想在json对象中获取唯一的键,并将它们推送到数组中。我如何实现它。请引导我 键:any=[];//数组我想推送json数据的键。 数据:any=[]; this.testservice.getdata.subscribed:any[]=>{ 这个数据=d; } //我的数据样本 { 测试1:[{ t1:。。。, t2:。。。 t3:{ t31:{}, t32:{ t321:{ t3211:{}, t3212:{

我有一个从后端API获取的复杂json对象。我想映射json对象中每个键值对的键。我想在json对象中获取唯一的键,并将它们推送到数组中。我如何实现它。请引导我

键:any=[];//数组我想推送json数据的键。 数据:any=[]; this.testservice.getdata.subscribed:any[]=>{ 这个数据=d; } //我的数据样本 { 测试1:[{ t1:。。。, t2:。。。 t3:{ t31:{}, t32:{ t321:{ t3211:{}, t3212:{}, } } } } ], 测试2:[{ t21:…,。。。, t22:。。。 t23:{ t231:{}, t232:{ t2321:{ t23211:{}, t23212:{}, } } } } ] } //我的密钥数组应该是这样的。 键=[test1,test2,t1,t2,t3,t31,t32,t321,t3211,t3212, t21、t22、t23、t231、t232、t2321、t2322、t23211、t23212]
这里有一个启动函数给你,我没有微调它,但它应该让你开始

const getKeys=obj=> Array.isArrayobj ? 减少 键,项=>{ GetKeyItem .forEachkey=>{if!keys.includeskey{keys.pushkey;}; 返回键; }, [] :obj&&typeof obj===“对象” ? Object.keysobj.reduce 键,键=>{ 如果!keys.includeskey{ 按键。按键; } getKeysobj[key] .forEachk=>{if!keys.includesk{keys.pushk;}; 返回键; }, [] : []; console.log 获取密钥 { prop1:[{prop2:1},{prop1:2}], prop3:{prop4:1,prop2:2} }
; 所以你可以递归地调用一个函数,不管你的对象有多深

让数据={ 测试1:[{ t1:{}, t2:{}, t3:{ t31:{}, t32:{ t321:{ t3211:{}, t3212:{}, } } } }], 测试2:[{ t21:{}, t22:{}, t23:{ t231:{}, t232:{ t2321:{ t23211:{}, t23212:{}, } } } }] } 让键=[] 让getKeys=obj=>{ 对于Object.entriesobj的let[key,value]{ 如果!keys.includeskey{ 按键 } 数组的if值实例{ if!!value.length{ 对于值的内部值{ getKeysinnerVal } } }如果typeof值==='object'{ GetKeyValue } } } 获取密钥数据
你想要的输出是什么?这是一个非常深刻的问题Object@HaoWu我在底部的as键阵列中提到过。你的物体可以达到多少层深度?@Karl L。大约6层