2017-02-12 73 views
2

我有一个Web应用程序使用ListJs进行排序和筛选。在一块我的代码我有这样的功能:与自身比较时,字符串无法返回true。

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"由于间距问题而始终为假。什么可能会导致这样的事情,我怎么能解决它?有没有一种方法可以榨取额外的空间?

回答

3

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

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; 
});