函数后面的括号:reverse[0] 的含义是什么?

3

我是使用node v10.1版本,我有一个对象,里面保存了一些MIME类型,如下:

let all_mime_types = {
  //media types...

  text: "text/plain",
  html: "text/html",
  jpeg: "image/jpeg",
  jpg: "image/jpg",
  png: "image/png",
  javascript: "text/javascript",
  css: "text/css"
};

当我想通过一些代码(基于我参考的目录中的文件)来获取某个MIME类型时,我看到了这段代码:
let mime =
        all_mime_types[
          path
            .extname(full_address)
            .split(".") // seperates the "." from path.extname(full_address);
            .reverse()[0]
        ];

我的问题是.reverse()[0]这部分...

当我删除0或[0]时,它返回未定义(undefined)。

.reverse()[][0]是什么意思?


2
访问反转方法返回值的第一个索引:[0] - Code Maniac
1个回答

3
  1. split(".") 接受字符串作为输入,并返回数组作为输出。
  2. reverse 接受数组并将其反转,正如其名称所示。
  3. [0] 是数组的第一个元素,而该元素实际上是原始数组的最后一个元素。

因此,这段代码的作用是将字符串“/path/to/file/some.txt”转换为结果“txt”。

让我们用不那么令人困惑的样式重新编写:

let file_path = path.extname(full_address)
let split_by_extension_path = file_path.split(".")
let reversed_path = split_by_extension_path.reverse()
let extension = reversed_path[0]
let mime = all_mime_types[extension]

请注意,这段代码有多个问题。
首先,不是所有文件都有扩展名,也不是所有文件的扩展名都正确。
其次,可能您的JavaScript文件具有 ".js" 扩展名,而不是 ".javascript"。同样适用于 ".text" 和 ".txt" 文件。

2
.reverse()[0] can be just .pop() - georg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接