2017-04-15 1 views
3

자바 스크립트에서 이와 비슷한 것을 얻을 수있는 방법이 있습니까?스위치에서 자바 스크립트의 경우 "includes()"를 사용하십시오.

const databaseObjectID = "someId"; // like "product/217637" 

switch(databaseObjectID) { 
    case includes('product'): actionOnProduct(databaseObjectID); break; 
    case includes('user'): actionOnUser(databaseObjectID); break; 
    // .. a long list of different object types 
} 

이 더 호기심 질문은 내가 const type = databaseObjectID.split('/')[0];를 사용하여 내 문제를 해결 한이 특별한 경우처럼, 스위치/사건의 가능성을 이해하고이 작동 type

답변

1

사용 사례는 사례의 남용으로 간주됩니다.

가 대신 단지 키로 ObjectId가 제품이나 사용자의 주위에 정적 컨텐츠가 포함되어있는 경우

 if (databaseObjectId.includes('product')) actionOnProduct(databaseObjectID); 
else if (databaseObjectId.includes('user')) actionOnUser(databaseObjectID); 
// .. a long list of different object types 

IFS, 당신이 그것을 제거 할 수 있습니다 사용하고 사용자 또는 제품을 사용

var actions = { 
    "product":actionOnProduct, 
    "user" :actionOnUser 
} 

actions[databaseObjectId.replace(/..../,"")](databaseObjectId); 
+0

linting 규칙으로 인해 그러한 프리젠 테이션을 허용하지 않기 때문에 첫 번째 제안이 내게 적합하지 않으며 데이터 유형 당 두 줄의 피하기를 원합니다. 그러나 두 번째 제안은 저에게 잘 맞습니다 ... 고마워요! –

5

의 스위치 케이스를 적용하지만,하는 것입니다 실제로 사용해서는 안됩니다.

const databaseObjectID = "someId"; // like "product/217637" 

switch(true) { 
    case databaseObjectID.includes('product'): actionOnProduct(databaseObjectID); break; 
    case databaseObjectID.includes('user'): actionOnUser(databaseObjectID); break; 
    // .. a long list of different object types 
} 
+1

왜 실제로 사용하지 않습니까? –

+0

해킹이 아니기 때문에 부팅하기에 더 짧은 코드를 만드는 break가없는 if/elseifs 세트보다 읽기가 더 쉬울 필요는 없습니다. 감사합니다. – mplungjan

+0

. 실제로, 나는 보통의 linting 규칙처럼 if/elseif를 사용하고 싶지 않다. if/elseif 당 두 줄을 사용하여 끝낼 것이다. 내 데이터 유형 목록은 잠재적으로 길기 때문에 유형 당 단 한 줄로 된 것을 찾고있었습니다. –

0

죄송합니다, 나는 누군가가 이것을 정리해야 할 멍청한 놈이다. 그러나 여기에 아이디어가있다. 카테고리를 확인하고 리턴 한 다음 스위치를 사용하는 함수로 전달하십시오.

function classify(string){ 
    var category = categorize(string); 
    switch (category) { 
    case 'product': 
     console.log('this is a product'); 
     break; 
    case 'user': 
     console.log('this is a user'); 
     break; 
    default: 
     console.log('category undefined');  
    } 
} 

function categorize(string){ 
    if (string.includes('product')){ 
    return 'product'; 
    } 
    if (string.includes('user')){ 
    return 'user'; 
    } 
} 
var string1 = "product789"; 
var string2 = "user123"; 
var string3 = "test567"; 

classify(string1); 
classify(string2); 
classify(string3); 

죄송합니다. 또한 귀하의 예와 일치하지 않습니다.

관련 문제