写这个的正确方法是什么?需要替换一个switch语句

时间:2019-06-03 16:28:59

标签: javascript

我正在寻找一种更好的方式编写此代码,因为它看起来非常丑陋。但是我想它工作正常,但是我只是想知道是否有更好的方法来编写此代码? 基本上,语句中的每个键都需要检查与该键相关的事物。也许我应该写一些大的if语句?还是使用一些JSON对象并存储密钥名称以及该名称在检查中的名称?希望能找到一些最佳方法的提示!

并且该代码不是真正的代码(目前尚无),这只是我快速编写的内容,以举例说明真实代码的外观。

switch (key) {
case 'cat':
    if (animals.check('kitty')) {
        delete animalsArray[index];
    }
    break;
case 'dog':
    if (animals.check('doggo')) {
        delete animalsArray[index];
    }
    break;
case 'hippo':
    if (animals.check('idk')) {
        delete animalsArray[index];
    }
    break;
case 'tiger':
    if (animals.check('somethingSpecificforTIGER')) {
        delete animalsArray[index];
    }
    break;
case 'toad':
    if (animals.check('idk')) {
        delete animalsArray[index];
    }
    break;
case 'horse':
case 'zebra':
    if (animals.check('ass')) {
        delete animalsArray[index];
    }
    break;

default:
    break;
}

只需改进代码:P

2 个答案:

答案 0 :(得分:3)

使用将键映射到animals.check参数的对象:

const mapping = {
    cat: "kitty",
    dog: "doggo",
    ...
};
if (mapping.hasOwnProperty(key) && animals.check(mapping[key])) {
    delete animalsArray[index];
}

答案 1 :(得分:-1)

我不确定我能得到你想要的东西,但是你不能使用类似的东西:

var zoo = {
    king : 'lion',
    thief : 'snake'
}

var arr = ['lion', 'snake'];

delete arr[arr.indexOf(zoo.king)]