Javascript split()方法出乎意料地表现

时间:2018-02-19 14:43:55

标签: javascript arrays split

我似乎无法将文件扩展名包含在我的split()数组中。

HTML:

<input type="file" id="audInput" onchange="loadAud()" autocomplete="off"><br>

<textarea id="txtArea" rows="4" cols="50" autocomplete="off"></textarea>

JS:

function loadAud() {

  var fileInput = document.getElementById('audInput');   
  var filename = fileInput.files[0].name;

  var fileSplit = filename.split(".");
  var ext = fileSplit.pop();

  document.getElementById("txtArea").value = filename + "\n" + fileSplit+ "\n" + ext;

文件名:

this.is.a.test.mp3

Textarea值:

  

this.is.a.test.mp3

     

此,是,一个,测试

     

MP3

为什么不是第二行&#34;这是一个测试,mp3&#34;? pop()方法似乎按预期工作,因为它返回&#34; mp3&#34;。

3 个答案:

答案 0 :(得分:0)

原因Server.Transfer("PageC.aspx"); 从数组中删除元素。可以这样做:

.pop()

答案 1 :(得分:0)

由于.pop()返回从数组中删除的内容,因此将其链接到split()时会返回。

var fileSplit = filename.split(".").pop();

演示

&#13;
&#13;
var filename = 'index.html';


var fileSplit = filename.split(".").pop();

console.log(fileSplit);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

正如 official documentation中所说。

  

pop()方法从数组中删除最后一个元素并返回该元素。

     

此方法更改数组的长度

因此您可能必须在拆分操作后删除最后一个元素:

&#13;
&#13;
var fileSplit = "this.is.a.test.mp3".split(".");

console.log(fileSplit + "\n" + fileSplit.pop());
&#13;
&#13;
&#13;