2014-10-11 1 views
0

문자열과 문자열의 배열을 모두 가지고 있습니다.javascript indexOf가 문자열 및 배열과 어떻게 다르게 작동합니까?

var strFruit = "Apple is good for health"; 
var arrayFruit = ["Apple is good for health"]; 

var strResult = strFruit.indexOf("Apple"); //strResult shows 0 
var arrayResult = arrayFruit.indexOf("Apple"); // arrayResult shows -1 

하지만 arrayFruit.indexOf("Apple is good for health") arrayResult를 사용하는 경우 0

쇼와 같이 IndexOf이 아닌 문자열과 방법을 모두 검색 다른 배열 요소의 일치를 찾습니다 그런데 왜 내 질문 이다?

Jsfiddle

PS :이 질문을하는 주된 이유는 내가 .I 이해할 수 indexOf의 소스 코드를 이해 할 수없는 오전 은 문자열과 확실하지 array.But 메신저로 (indexOf) 무엇을어떻게 문자열 및 배열? (poly fills or source code)와 함께 작동합니다.

답변

1

배열로 검색 할 때 indexOf은 전체 문자열을 검색하려고합니다. 예를 들면 : 당신에

var arrayFruit = ["Apple", "is", "good", "for", "health"]; 
var arrayResult = arrayFruit.indexOf("Apple"); // arrayResult will be 0 

귀하의 경우, 당신은 배열에서 하나 개의 항목 만 "Apple is good for health"를 나타내는 즉, 문자열을 가지고있다. 따라서 indexOf"Apple"과 (와) 일치시킵니다. 이후 :

"Apple is good for health" != "Apple" 

당신은 대답으로 -1을 얻습니다. 그것은 당신에게 당신이 문자열의 하나의 개체가 arrayFruit에서 0

var arrayResult = arrayFruit.indexOf("Apple is good for health"); /arrayResult will be 0 
0

를주고 당신이 문자의 순서를 strFruit에서 result= 0

에 대한 동일한 개체를 일치 갈까요 비교하는 것입니다, 당신은 전체 문자열을 검색했다 이 characters의 순서를 indexOf와 일치시킵니다.

1

문자열에서 indexOf를 사용하면 문자열에서 전달 된 인수를 검색합니다. 반면에 배열에서 사용할 때는 배열에서 해당 요소를 검색합니다.

문자열 :

var myString = "Apple is good for health"; 
console.log("Apple is at", myString.indexOf("Apple")); 
//Outputs "Apple is at 0" 

배열 : 당신이 array 개체에 대한 indexOf를 호출하면

var myArray = ["Apple is good for health", "Another sentence", "Sentence 3"]; 
console.log("Apple is good for health is element", myArray .indexOf("Apple is good for health")); 
//Outputs "Apple is good for health is element 0" 
console.log("Sentence 3 is at", myArray.indexOf("Sentence 3")); 
//Outputs "Sentence 3 is at 2" 
0

하는 것이, 각각의 요소와 전체 텍스트를 비교합니다 귀하의 경우는 전체로 하나의 단어를 비교하고 그래서 문장 (배열의 유일한 요소)은 -1을 반환하며 괜찮습니다. 하지만 당신은 값으로 배열의 항목에 대한이 같은 strFruit에서 문자열 Apple에 대한

var k = "Apple is good for health".split(" "); 
var idx = k.indexOf("Apple"); // it will return 0 
1

strFruit.indexOf("Apple") 검색하지만 arrayFruit.indexOf("Apple") 검색을 수행 할 경우 Apple

관련 문제