我正在尝试使用像这样的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="">
任何想法如何解决这个问题?
如果myinput
为空(""
),它将被拆分为([""]
)并将其与另一个值连接会产生额外的逗号。你可以用空数组替换它:
var split = myinput.length ? myinput.split(',') : [];
你可以用空字符串过滤数组,
因为如果你拆分一个空字符串,
''
你得到一个这个空字符串的数组,
['']
这是不需要的。
通过使用
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="">
你必须过滤空字符串。
由于起始字符串为空,因此在每个逗号上拆分''
将为您提供['']
。因此,您必须在结果数组中删除这些空字符串。您可以使用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()">