How to get the filename from the full path and store in an object property in Javascript?

Tags: , ,



My initial problem was to store only the filename from the full path on an object and I did find the answers to that online but I had problem storing the same in a property of an object.

Here is a piece of code that I have written. Hopefully my problem would be clear.

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

This whole code is inside a function which is called and the user is asked to choose a file from his computer. Now what my problem is in Line3,I need to store the filename only from the fullpath (Example: ‘example.mp3’), inside the ‘path’ property of the object ‘song’. This is what was getting saved in ‘path’ once I run the code-

Output image

Please help me in solving this . Thanks!

Answer

You need to apply () to execute your function. But you can simplify it further by just assigning the value of your replace() directly, like this:

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

If you’re committed to using the function in the way you defined it, you can do this:

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;
     }()
};

Note the extra () after the path function definition.



Source: stackoverflow