2012-08-27 3 views
0

내가 배열을 상상배열에 남아있는 항목을 확인하는 방법은 무엇입니까?

arr = ["one", "two", "three"] 

및 로직 내가 마지막if에 작성해야 어떤 조건

if "one" in arr 
    processOne() 

if "two" in arr 
processTwo() 

if <<there is another items in array>> 
    processOthers() 

? 나는 _.difference 함수를 찾았지만 요소 ("one", "two"...)를 두 번 이상 쓰고 싶지 않습니다. 내가 0..N 처리 함수를 호출 할 필요가 있기 때문에

편집

  1. if else if else는 적합하지 않습니다.
  2. 다음은 array를 사용한 예입니다. 그러나이 코드는 객체가 될 것 같은데 어떻게 될까요?
  3. 배열 .indexOf 방법을 사용하여 중복
+0

길이를 확인하고 else를 사용하면 어떨까요? –

+0

'for..in'은 배열과 객체와 함께 작동합니다. – timidboy

답변

3

없다.

var index; 
if ((index = arr.indexOf('one')) !== -1) { 
    processOne(); 
    arr.splice(index, 1); 
} 

if ((index = arr.indexOf('two')) !== -1) { 
    processTwo(); 
    arr.splice(index, 1); 
} 

if (arr.length > 0) { 
    processOthers(); 
} 

업데이트 : 또는 배열을 반복 할 수 있습니다.

var one = false, two = false, others = false; 
for (var i = 0; i < arr.length; i++) { 
    if (arr[i] === 'one' && !one) { 
    processOne(); 
    one = true; 
    } else if (arr[i] === 'two' && !two) { 
    processTwo(); 
    two = true; 
    } else (!others) { 
    processOthers(); 
    others = true; 
    } 
    if (one && two && others) break; 
} 
+0

요소 existense를 확인하는 방법을 알고 있습니다. 배열에 다른 항목이 남아 있는지 확인하고 싶습니다. –

+0

@PlasticRabbit 수정 된 답변을 확인하십시오. 'arr' 자체를 변경하고 싶지 않다면, 그것을 복사하십시오. – xdazz

+0

스플 라이스 기능에 대해 생각했습니다. 맞습니다. 하지만 냄새라고 생각합니다. 다른 방법이 있습니까? –

0

대신이 작업을 수행해야합니다

당신이있는 경우 :

arr = ["one", "two", "three"] 

다음 : 그것을해야

if (something corresponds to arr[one]) 
{ 
    processOne() 
} 

elseif (something corresponds to arr[two]) 
{ 
    processTwo() 
} 

else (something corresponds to arr[three]) 
{ 
    processOthers() 
} 

합니다.

+0

else else else가 적합하지 않은 경우. –

관련 문제