与自身相比,String无法返回true。

时间:2017-02-12 19:16:04

标签: javascript html

我有一个使用ListJs进行排序和过滤的Web应用程序。在我的一段代码中,我有这个功能:

var filterOptions = { valueNames: ['department'] };

var employeeFilterList = new List('employees', filterOptions);

$('#filter-engineering').click(function() {
  employeeFilterList.filter(function(item) {
    console.log(item.values());
    if (item.values().department === "Engineering") {
      return true;
    } else {
      return false;
    }
  });
  return false;
});

基本上,这是在Web应用程序上正在使用list.js在员工目录上的排序功能,只返回工程中的那些。现在这是真正的问题,除了这个问题之外,这个代码应该可以工作。

函数中的console.log返回下面显示的每个项目的值:

enter image description here

正如您所看到的,此对象的部门值为' Engineering ',其中包含一些奇怪的编码。通过运行我的代码并刷新页面,我发现由于间距问题,item.values().department === "Engineering"始终为false。什么可能导致这样的事情,我怎么能绕过它呢?有没有办法可以选择额外的空间?

2 个答案:

答案 0 :(得分:3)

使用trim()删除不必要的空格,而不是if (item.values().department === "Engineering") {使用if (item.values().department.trim() === "Engineering") {

答案 1 :(得分:1)

你尝试过修剪吗?它会是这样的:

var filterOptions = { valueNames: ['department'] };

var employeeFilterList = new List('employees', filterOptions);

$('#filter-engineering').click(function() {
  employeeFilterList.filter(function(item) {
    console.log(item.values());
    var sanitized = $.trim(item.values().department)
    if (sanitized === "Engineering") {
      return true;
    } else {
      return false;
    }
  });
  return false;
});