创建数组并将对象推入数组后,对象是[Object],而不是实际数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建数组并将对象推入数组后,对象是[Object],而不是实际数据相关的知识,希望对你有一定的参考价值。
在节点中,我试图将对象数组从S3(解析时超级烦人的响应)转变为更可用的前端。初始对象格式为:
[
{
Key: 'some/folder/structure/file.jpg',
LastModified: 2020-05-14T02:16:59.000Z,
ETag: '"SomeETag"',
Size: 83630,
StorageClass: 'STANDARD'
}
]
我正在尝试将其更改为类似数组的数组:
name: "some"
files: [
{
key: 'some/folder/structure/file.jpg',
name: 'file.jpg',
folder: 'folder',
subfolder: 'structure'
}
]
键是我需要从s3检索对象的键。name是用于前端显示的文件名。该文件夹最终成为我要在其中显示文件的顶级文件夹。子文件夹是介于文件夹和文件名之间的任何内容。
此处理将为s3(示例中为'some')中的每个实际顶级文件夹创建一个对象。该对象将具有一个名称,以及一个类似于上述对象的文件对象列表。
这是我的职责:
function processResponse(res) {
var result = [];
res.forEach(item =>{
if(item.Key.slice(-1) === '/') return;
const split = item.Key.split('/');
var obj = {
key: item.Key,
name: split[split.length-1],
folder: split[1],
subfolder: split.length <= 3 ? '' : split.join([2,split.length-2])
}
var index = result.findIndex(x => x.name === split[1])
if(index === -1) {
result = [...result, {
name: split[1],
files: []
}]
index = result.length-1
}
result[index].files = [...result[index].files, obj];
});
console.log(result)
return result;
}
我看到的问题与任何单个文件夹的文件数组有关。当我用控制台记录生成的数组时,返回的不是这样,而是显示每个文件的数据:
[
{
name: 'Forms',
files: [
[Object], [Object],
[Object], [Object],
[Object], [Object],
[Object], [Object],
[Object], [Object],
[Object], [Object]
]
}
]
除了数据丢失之外,它似乎也打破了返回前端的局面。如何将实际数据推送到每个文件数组中,以便可以进行console.log-ed并正确返回?]
奖金:我认为我制作子文件夹字符串的方法是错误的。基本上我想要从split [2]到文件之前的最后一个文件夹的任何内容,如果分离的长度只有3,则需要''”。
谢谢您的帮助!
答案
事实证明,这很好,我的问题是不了解控制台如何掩盖结构化的深层数据。要查看全部数据,我需要做的是:
console.log(JSON.stringify(result,0,2))
以上是关于创建数组并将对象推入数组后,对象是[Object],而不是实际数据的主要内容,如果未能解决你的问题,请参考以下文章