我需要比较我在angular中创建的自定义过滤器中的两个字符串。
问题是比较总是false
,我检查了两个字符串,长度和类型的内容,它们是相等的。
我处理了localeCompare
,==
===
,但在这种情况下他们都返回false
。
奇怪的是脚本的第一部分,它工作正常,两个部分都是一样的。
这是我的代码:
.filter('search',function(){
return function(items,arguments){//arguments -> object {columns,parameters}
var i=0,j=0,filtered=[],nmbStr="",comp="";
for(i=0;i<items.length;i++){
nmbStr = (items[i][arguments.columns[0]]).toString();
nmbStr = nmbStr.substr(0,arguments.parameters[0].length);
switch(arguments.parameters.length){
case 1:
if( nmbStr === arguments.parameters[0]) // 1st comparison here
filtered.push(items.slice(i,i+1)[0]);
break;
case 2:
comp = (items[i][arguments.columns[1]]);
comp = comp.substr(0,arguments.parameters[1].length);
comp = comp.toLowerCase();
if( nmbStr === arguments.parameters[0] && comp === arguments.parameters[1]){ // this is not working
filtered.push(items.slice(i,i+1)[0]);//crea un nuevo objeto a partir del array no una referencia
}
break;
}
}
return filtered;
}
})
我打电话是这样的:
$filter('search')(tempArray,{columns:['id','company_name'],parameters:['1052','in']});
请帮助我,我不知道该怎么做......