如果原始空白,Javascript推送到数组添加逗号

问题描述 投票:0回答:3

我正在尝试使用像这样的Javascript向现有数组添加ID ...

var myinput = $("input[name=myinput]").val();
console.log(myinput);

var split = myinput.split(',');

SavedId = 1;

split.push(SavedId);

alert(split);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input name="myinput" value="34">

这很好用,但如果myinput还没有值,那么它会在注入值之前添加一个逗号,就像这样......

var myinput = $("input[name=myinput]").val();
console.log(myinput);

var split = myinput.split(',');

SavedId = 1;

split.push(SavedId);

alert(split);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input name="myinput" value="">

任何想法如何解决这个问题?

javascript
3个回答
5
投票

如果myinput为空(""),它将被拆分为([""])并将其与另一个值连接会产生额外的逗号。你可以用空数组替换它:

 var split = myinput.length ? myinput.split(',') : [];

3
投票

你可以用空字符串过滤数组,

因为如果你拆分一个空字符串,

''

你得到一个这个空字符串的数组,

['']

这是不需要的。

通过使用Boolean作为回调进行过滤,您将获得仅使用truthy的数组,就像不是空字符串一样。

[]

var myinput = $("input[name=myinput]").val();

console.log(myinput);

var split = myinput.split(',').filter(Boolean),
    SavedId = 1;

split.push(SavedId);
alert(split);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input name="myinput" value="">

0
投票

你必须过滤空字符串。

由于起始字符串为空,因此在每个逗号上拆分''将为您提供['']。因此,您必须在结果数组中删除这些空字符串。您可以使用Boolean函数根据其真实性过滤掉值。

另外,在向数组添加数字之前,请注意将拆分字符串转换为数字。您可以通过映射阵列上的Number函数来完成此操作。

function onChange() {
  const myinput = $("input[name=myinput]").val();

  const split = myinput.split(',')
    .filter(Boolean)
    .map(Number);

  split.push(1);

  console.log(split);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Type in the field:
<input name="myinput" value="" oninput="onChange()">
© www.soinside.com 2019 - 2024. All rights reserved.