Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 生成s3 aws bucket的正确模式_Javascript_Node.js_Json_Typescript - Fatal编程技术网

Javascript 生成s3 aws bucket的正确模式

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

我有一个路径或位置列表,表示aws s3存储桶的内容:

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 : {};
}