2016-10-26 2 views
0

Array.filter 메서드를 사용하여 배열을 필터링하는 동안 멈추었습니다. String indexOf 항상 -1을 반환합니다.

나의 코드로 봐 주시기 바랍니다 :

$scope.products = CachedData.Products.filter(function (item) { 
    var itemNameSlug = Helpers.slug(item.Name); // eg: product100 
    var keywordSlug = Helpers.slug($scope.keyword); // eg: p, pr, pro, duct etc... 
    var result = itemNameSlug.indexOf(keywordSlug); 
    console.log(result); // always -1 
    return result > -1; 
}); 

내가 문자로 키워드를 입력하면, 항상 하늘의 배열 반환 (즉, 같이 IndexOf 반환 -1). 숫자를 입력하면 예는 1 또는 10 또는 100 또는 00입니다. 올바른 결과가 나타납니다.

왜?

도움이 될 것입니다. 감사합니다

+1

console.log ($ scope.keyword, Helpers.slug ($ scope.keyword))의 결과는 무엇입니까? –

+0

둘 다 문자열입니다. 제 코드의 주석을 확인하십시오 – trinvh

+0

분명히 그들은 양쪽 문자열이 아닙니다. 그렇지 않으면 항상 결과가 -1이되지 않을 것입니다 –

답변

0

@trinvh 의견의 출력에 따라, 당신은 건초 더미바늘를 검색 할 때, 중간 에 점점 뒤에 공백이 발생하는 경우 후행 공간을 얻을 수바늘,

/* according to your comment: */ 
console.log('-' + itemNameSlug + '-', '-' + keywordSlug + '-', typeof itemNameSlug, typeof keywordSlug); 
/* gives: -product95 - -pro - string string */ 

(우리는 공백을 포함하지 않는 슬러그, 여기 다루고 있기 때문에) 그 다음 내가 product95 "에 대해 일치하지 것이다는 바늘는"프로 "입니다 말할 것입니다 일치하는 것은 불가능하다 "

관련 문제