Как получить имя файла из полного пути и сохранить в свойстве объекта в Javascript?

#javascript #html #css

#javascript #HTML #css

Вопрос:

Моей первоначальной проблемой было сохранить только имя файла из полного пути к объекту, и я нашел ответы на это в Интернете, но у меня возникла проблема с сохранением того же самого в свойстве объекта.

Вот фрагмент кода, который я написал. Надеюсь, моя проблема будет ясна.

 let song = {
                  name: document.getElementById('title').value,//Line 1
                  artist: document.getElementById('yr').value,//Line 2
                  path: function () {//Line 3
                  var filename = fullPath.replace(/^.*[\/]/, '');
                  return filename;
                  }
  

Весь этот код находится внутри функции, которая вызывается, и пользователю предлагается выбрать файл со своего компьютера. Теперь, в чем моя проблема в строке 3, мне нужно сохранить имя файла только из полного пути (пример: ‘example.mp3’), внутри свойства ‘path’ объекта ‘song’.
Это то, что сохранялось в «пути» после запуска кода-

Вывод изображения

Пожалуйста, помогите мне в решении этой проблемы. Спасибо!

Комментарии:

1. Если вы определяете path как функцию, то в какой-то момент вам нужно выполнить эту функцию с () , чтобы получить доступ к ее возвращаемому значению. В настоящее время вы видите его как функцию в возвращаемом объекте objected, потому что именно так вы его определили.

Ответ №1:

Вам нужно применить () для выполнения вашей функции. Но вы можете упростить его еще больше, просто присвоив значение your replace() напрямую, например:

 let song = {
     name: document.getElementById('title').value,//Line 1
     artist: document.getElementById('yr').value,//Line 2
     path: fullPath.replace(/^.*[\/]/, '')
};
  

Если вы намерены использовать функцию так, как вы ее определили, вы можете сделать это:

 let song = {
     name: document.getElementById('title').value,//Line 1
     artist: document.getElementById('yr').value,//Line 2
     path: function () {//Line 3
        var filename = fullPath.replace(/^.*[\/]/, '');
        return filename;
     }()
};
  

Обратите внимание на лишнее () после определения path функции.

Комментарии:

1. Да, хорошо, я только что попробовал это, и это легко сработало, большое спасибо @Marc!!!