递归地将所有数组转换为多维Javascript对象中的对象
考虑以下对象:递归地将所有数组转换为多维Javascript对象中的对象,javascript,arrays,json,Javascript,Arrays,Json,考虑以下对象: const data = { foo: 'bar', items: [ { id: 1, items: [ { id: 50, content: 'test' } ] }, { i
const data = {
foo: 'bar',
items: [
{
id: 1,
items: [
{
id: 50,
content: 'test'
}
]
},
{
id: 2,
items: [
{
id: 70,
content: 'test'
},
{
id: 85,
content: 'test'
}
]
}
]
}
我目前使用的插件只支持数组中的字符串值,因此我需要遍历数据并将所有数组转换为对象
我希望我能以某种方式利用它,但我一直没能让它发挥作用
这就是我所尝试的:
const json = '{"foo":"bar","items":[{"id":1,"items":[{"id":50,"content":"test"}]},{"id":2,"items":[{"id":70,"content":"test"},{"id":85,"content":"test"}]}]}';
console.log(JSON.parse(json, (key, value) =>
typeof value === 'array'
? Object.assign({}, value)
: value
));
有人能提出一种实现这一目标的方法吗?我希望我可以避免递归迭代对象,但我不确定这是否可行
更新
预期输出应如下所示:
const data = {
foo: 'bar',
items: {
0: {
id: 1,
items: {
0: {
id: 50,
content: 'test'
}
}
},
1: {
id: 2,
items: {
0: {
id: 70,
content: 'test'
},
1: {
id: 85,
content: 'test'
}
}
}
}
}
注意所有数组现在都是对象…您可以使用检查数组
const json='{“foo”:“bar”,“items”:[{“id”:1,“items”:[{“id”:50,“content”:“test”}],{“id”:2,“items”:[{“id”:70,“content”:“test”},{“id”:85,“content”:“test”}];
console.log(JSON.parse(JSON,(key,value)=>Array.isArray(value)
?对象。赋值({},值)
:价值
));代码>
。作为控制台包装{max height:100%!important;top:0;}
您能否举例说明所需的输出是什么?您的预期输出是什么?“将所有数组转换为对象”这会产生什么?像这样的数组?还有别的吗?当然,给我2秒钟。你不能有没有键的嵌套对象。这似乎正是我要找的!非常感谢你!