javascript - 检查某个项目是否已在数组中的正确 jquery 语法是什么?这是一个简单的例子

标签 javascript jquery arrays if-statement

我创建了一个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/

相关文章:

javascript - 你如何取消你的 href ="javascript:void(null)"?

javascript - 级联下拉列表

javascript - 导航菜单栏

jquery - 在已经缩放的元素上更改变换原点

c - 分配内存并为 3D 数组设置值时出现段错误

python - 使用 Python 比较两个文件夹(如 Linux 中的 diff 工具)

javascript - 重新发明轮子 : Node. JS/事件驱动编程与函数式编程?

JavaScript 防止无限循环 - 可能使用动态识别模式?

javascript - 自定义数据-* 类型、css 和 javascript

python - 数组中值比较的Pythonic方法?