Javascript 生成s3 aws bucket的正确模式
我有一个路径或位置列表,表示aws s3存储桶的内容:Javascript 生成s3 aws bucket的正确模式,javascript,node.js,json,typescript,Javascript,Node.js,Json,Typescript,我有一个路径或位置列表,表示aws s3存储桶的内容: const keysS3 = [ 'platform-tests/', 'platform-tests/datasets/', 'platform-tests/datasets/random_csv_datasets/', 'platform-tests/datasets/random_csv_datasets/1
const keysS3 = [
'platform-tests/',
'platform-tests/datasets/',
'platform-tests/datasets/random_csv_datasets/',
'platform-tests/datasets/random_csv_datasets/1/',
'platform-tests/datasets/random_csv_datasets/1/raw/',
'platform-tests/datasets/random_csv_datasets/1/raw/change_name_dtype.json',
'platform-tests/datasets/random_csv_datasets/1/raw/change_name_dtype_2.csv',
'platform-tests/datasets/random_csv_datasets/1/raw/random_data_stack.json',
'platform-tests/datasets/random_csv_datasets/1/raw/random_data_stack_0.csv',
'platform-tests/datasets/random_csv_datasets/1/raw/random_data_stack_1.csv',
'platform-tests/datasets/random_csv_datasets/1/raw/random_data_stack_2.csv',
'platform-tests/test-folder/',
'README.md',
'preprocessed_data.csv',
'preprocessed_data2 copy.csv',
'reg1.csv',
'tested_demo.csv'
];
我正在用Typescrtip写这段代码:
let output = {};
let current: any;
for (const path of keysS3) {
current = output;
const segment = path.split('/');
segment.forEach((value, index) => {
if (value !== '' && index + 1 < segment.length) {
if (!(value in current)) {
current[value] = {};
}
current = current[value];
} else {
current[value] = null;
}
});
}
console.log(JSON.stringify(output));
但是,问题是我得到了这个模式,它在每个子文件夹后面都添加了一个额外的字段
“”:空
过滤掉
上的空元素。拆分,因为您将以/
结束,所以您将始终以数组末尾的空数组元素结束
const segment=path.split('/').filter(布尔)代码>我简单地通过添加以下代码行解决了这个问题:
if (!(value in current)) {
current[value] = value.includes('.') ? null : {};
}
验证该值是路径还是文件名。nop,没有帮助。我收到以下错误:TypeError:无法将属性“dataset”设置为null
{
"platform-tests":{
"":null,
"datasets":{
"":null,
"random_csv_datasets":{
"1":{
"":null,
"raw":{
"":null,
"change_name_dtype.json":null,
"change_name_dtype_2.csv":null,
"random_data_stack.json":null,
"random_data_stack_0.csv":null,
"random_data_stack_1.csv":null,
"random_data_stack_2.csv":null
}
},
"":null
}
},
"test-folder":{
"":null
}
},
"README.md":null,
"preprocessed_data.csv":null,
"preprocessed_data2 copy.csv":null,
"reg1.csv":null,
"tested_demo.csv":null
}
if (!(value in current)) {
current[value] = value.includes('.') ? null : {};
}