0

나는 명단을 저장하는 Knockout.js에 관찰 가능한 배열을 가지고 있습니다. 이 배열의 구조는 다음과 같습니다.knockout.js의 다차원 관찰 가능 어레이에서 검색 문자열과 속성 비교

Array 
    |--- Person 1 
      |--- ID 
      |--- Name 
      |--- ... 
    |--- Person 2 
      |--- ID 
      |--- Name 
      |--- ... 
    |--- ... 

나는 사람의 필드와 그 값을 비교해야하는 검색 창을 가지고 있습니다. 그래서 "000"을 입력하면 Person 1의 ID가됩니다. 사람 2의 이름 인 경우 "Person"을 입력하는 경우와 동일합니다.

//This code should replace the "further search logic" 
if(name.toLowerCase().contains(val.toLowerCase()){ 
    //It's a hit! 
} 

그러나 분명히 :

self.searchValue = ko.observable(); 
self.throttledValue = ko.computed(self.searchValue).extend({ throttle: 500 }); 

//Search by value 
self.throttledValue.subscribe(function (val) { 
    if (val !== ''){ 
     for (var i = 0; i < self.persons().length; i++) { 
      var name = self.persons()[i].fullName; 
      var id = self.persons()[i].ID; 
      //Further search logic here 
     } 
    } 
}, self); 

내가 같이, 사람이 검색 문자열에있는 필드를 비교할 수 있도록하고 싶습니다 :

현재, 내 코드는 다음과 같이 보입니다 , toLowerCase() 또는 이 인식되지 않아 내 페이지를로드하려고 시도 할 때 오류가 발생합니다.

누구든지 올바른 방향으로 나를 도울 수 있습니까? 사전에

감사합니다!

답변

1

toLowerCase()string 방법입니다. 예를 들어 숫자에는 작동하지 않습니다.

은 오 와우 toString()

if(name.toString().toLowerCase().contains(val.toString().toLowerCase()){ 
    //It's a hit! 
} 
+1

으로 봅니다. 내가 어떻게 이것을 잊을 수 있니? 감사. –