javascript - 使用 .each() 填充数组,但第一个值显示为空
问题描述
所以我有一个选择,我将所有值和文本循环到一个数组中。
我不明白为什么这个数组的第一个值是空的?
var op = new Array();
$('select option').each(function() {
if ($(this).val() !== '' && $(this).val() !== null) {
op[$(this).val()] = $(this).text();
}
});
console.log(op);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select>
<option value="">select 1</option>
<option value="1">select 2</option>
<option value="2">select 3</option>
<option value="3">select 4</option>
<option value="4">select 5</option>
</select>
(5) [空,“选项1”,“选项2”,“选项3”,“选项4”]
1:“选项1”
2:“选项2”
3:“选项3”
4:“选项4”
这就是我从控制台得到的。
虽然我确实认为代码是正确的,但我只是不明白为什么第一个值是空的。
解决方案
您正在使用选项值作为数组索引。由于没有选项,value="0"
您在数组的该元素中没有任何值。
您可以直接推入数组,而不是使用该值作为索引。
$('select option').each(function(){
if ($(this).val() !== '' && $(this).val() !== null) {
op.push($(this).text());
}
});
那么开头不会有空元素,但索引不会对应于值。
或者你可以创建op
一个对象而不是一个数组。然后它将仅具有您添加的属性。
推荐阅读
- c# - 将基于任务的 C# 示例转换为 VB.Net 的问题
- dart - ScopedModelDescendant 字符串返回 null。不检索状态
- python - 使用类、函数和方法变量
- java - 如何在不更改清单指定主类的情况下修复启动 .jar 文件?
- sharepoint - 从表单获取字段值并传递到 Web 部件列表视图筛选器
- mocha.js - 无法使用赛普拉斯中的 mocha-allure-reporter 读取未定义错误的属性“基础”
- serverless - 尝试部署时连接到不同的 ARN/Role/Amazon 账户
- php - php文件名中的通配符
- python - 由于串口打开情况,无法从 arduino 和无线调制解调器读取串行数据
- c# - 需要更新列表项,然后将其放入文本文件中