首页 > 解决方案 > JS 为各种相似文件返回单一文件类型(例如'mp4' || 'm4v' = 'MOV')

问题描述

我有一个 populateTable 函数,我正在尝试将从 JSON 文件中读取的几种不同文件类型组合成一种显示类型。在这种情况下 mp4 和 m4v 进入 MOV - 我没有收到任何错误,但表中的所有内容都未定义。

function populateTable() {
    
    function setGenericType(type) {
        if(type == 'mp4' || type == 'm4v')  {
            return 'MOV'
        }
    }

    for (const d of data) {
        $("#contents").append(`<tr>
            <td>${d.title}</td>
            <td>${d.year}</td>
            <td>${setGenericType(d)}</td>
          </tr>`)   
    }
}

有任何想法吗?来自 data.js 的 JSON 示例:

{
    "title":"Arc Transition",
    "year":2016,
    "type":"mp4"
}

标签: javascriptjson

解决方案


您将整个数据对象传递给您的setGenericType函数,但将参数与字符串进行比较,因此它们永远不会匹配。如果没有匹配的类型,函数返回undefined.

因此,要么将函数的参数视为传递给它的对象

function setGenericType(d) {
  if(d.type == 'mp4' || d.type == 'm4v')  {
    return 'MOV'
  }
}

或者只是将对象的类型传递给您的函数并保持函数原样

for (const d of data) {
  $("#contents").append(`<tr>
    <td>${d.title}</td>
    <td>${d.year}</td>
    <td>${setGenericType(d.type)}</td>
   </tr>`)   
}

推荐阅读