我创建了一个JS Fiddle尝试不同的事情。
该示例提出以下问题:“如何使下拉列表仅显示 4 个项目,同一字符串的每个实例仅显示一次?”
我的 if 语句不正确,我正在尝试找到设置 if 检查的正确方法。
HTML:
Project:<select id="projectList"></select>
Javascript:
var projects = [];
projects.push('<option value="0">- Select a Project -</option>');
var c = [];
c.push({project: 'Project 1'});
c.push({project: 'Project 2'});
c.push({project: 'Project 3'});
c.push({project: 'Project 3'});
c.push({project: 'Project 4'});
c.push({project: 'Project 3'});
for (var i = 0, j = c.length; i < j; i++) {
if ($.inArray(c[i].project, projects) === -1) {
projects.push('<option value="' + c[i].project + '">' + c[i].project + '</option>');
}
}
$('#projectList').html(projects.join(''));
---更新
在第一条评论之后,我可以用不同的方式提出问题: “那么我该如何重构 javascript 来只用 4 个不同的值填充这个下拉列表呢?考虑到我必须使用一个像我的变量 c 一样发送给我的数组?”
最佳答案
你不是在比较苹果与苹果。在您的数组中,您存储整个选项标记。在检查中,您只需检查 Project n
。
我会使用类似的东西:
var projects = ['<option value="0">- Select a Project -</option>'];
var c = [];
c.push({project: 'Project 1'});
c.push({project: 'Project 2'});
c.push({project: 'Project 3'});
c.push({project: 'Project 3'});
c.push({project: 'Project 4'});
c.push({project: 'Project 3'});
var seen = {};
for (var i = 0, j = c.length; i < j; i++) {
var project = c[i].project;
if (!seen[project]) {
projects.push('<option value="' + project + '">' + project + '</option>');
seen[project] = true;
}
}
$('#projectList').html(projects.join(''));
关于javascript - 检查某个项目是否已在数组中的正确 jquery 语法是什么?这是一个简单的例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20620236/