Javascript 将JSON数据复制到数组中

Javascript 将JSON数据复制到数组中,javascript,typescript,Javascript,Typescript,我想从JSON文件中获取数据,并将密钥和值对复制到数组中。 例如: jsondata = { 'Name': {'text': {'name': 'John'}}, 'Age': {'number': {'age': '22'}} } 进入 array=[["Name","text","name","John"] ["Age","number","age","22"]] 这可能吗?不使用外部库,您可以尝试: function concatify (json) {

我想从JSON文件中获取数据,并将密钥和值对复制到数组中。 例如:

jsondata = {
    'Name': {'text': {'name': 'John'}},
    'Age': {'number': {'age': '22'}}
}
进入

array=[["Name","text","name","John"]
       ["Age","number","age","22"]]

这可能吗?

不使用外部库,您可以尝试:

function concatify (json) {
    return typeof json == "string" ? json : Object.keys(json).reduce((x,y) => x.concat(y).concat(concatify(json[y])), []);
}

Object.keys(jsondata).map(k => [k].concat(concatify(jsondata[k])));


不使用外部库,您可以尝试:

function concatify (json) {
    return typeof json == "string" ? json : Object.keys(json).reduce((x,y) => x.concat(y).concat(concatify(json[y])), []);
}

Object.keys(jsondata).map(k => [k].concat(concatify(jsondata[k])));


在vanilla js中,可能是这样的:

数据={
'Name':{'text':{'Name':'John'},
'年龄':{'number':{'Age':'22'}
}
函数线性化(obj){
如果(对象的类型!=“对象”)
返回[obj];
var-res=[];
for(obj中的var键){
对于(线性化的var a(obj[key])){
res.push([key].concat(a))
}
}
返回res;
}
r=线性化(数据)

console.log(r)
在vanilla js中可能是这样的:

数据={
'Name':{'text':{'Name':'John'},
'年龄':{'number':{'Age':'22'}
}
函数线性化(obj){
如果(对象的类型!=“对象”)
返回[obj];
var-res=[];
for(obj中的var键){
对于(线性化的var a(obj[key])){
res.push([key].concat(a))
}
}
返回res;
}
r=线性化(数据)

console.log(r)
查看
lodash
包。我敢肯定,在查看
lodash
包时,有一个函数可以实现这一点。我很确定有一个函数可以实现这一点,这种方法假设嵌套总是两步深,我的代码假设每个嵌套对象只有一个子对象,@javier的代码假设您可以访问
.map
箭头函数
,这个故事的寓意是,
lodash
可能已经解决了这类问题:)@JasonPerske:
这种方法假设嵌套总是两步深
-为什么?完全错过了内部for循环中的递归调用,我的错。显然,我们都在使用同一种方法,但你的方法更灵活。这种方法假设嵌套总是两步深,我的代码假设每个嵌套对象只有一个子对象,@javier的代码假设你可以访问
.map
箭头函数
,这个故事的寓意是,
lodash
可能已经解决了这类问题:)@JasonPerske:
这种方法假设嵌套总是两步深
-为什么?完全错过了内部for循环中的递归调用,我的错。显然,我们都在采用相同的方法,但你的方法更灵活