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

Javascript 写这个的正确方法是什么?需要替换switch语句,javascript,Javascript,我正在寻找更好的方法来编写这段代码,因为它看起来很难看。但我想它是对的,但我只是想知道是否有更好的方法来写这个? 基本上,语句中的每个键都需要检查与该键相关的东西。也许我应该写一些大的if语句?或者使用一些JSON对象并将密钥名和名称存储在检查中?如果您能给我一些建议,我将不胜感激 代码并不是真正的代码(现在还没有),它只是我快速编写的东西,以给出一个真实代码的外观示例 switch (key) { case 'cat': if (animals.check('kitty')) {

我正在寻找更好的方法来编写这段代码,因为它看起来很难看。但我想它是对的,但我只是想知道是否有更好的方法来写这个? 基本上,语句中的每个键都需要检查与该键相关的东西。也许我应该写一些大的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

使用将密钥映射到
动物的对象。检查
参数:

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

使用将键映射到
动物的对象。选中
参数:

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

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

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

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

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

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

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

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

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


?请分享您自己为改进代码所做的任何尝试,如果您陷入困境,我们可以提供帮助。@melpomene此代码不在CR主题中,因为“
并且代码不是真实的代码(现在没有),这只是我快速编写的内容,以给出真实代码的外观示例。
”请阅读CR页面?请分享您自己为改进代码所做的任何尝试,然后如果您陷入困境,我们可以提供帮助。@melpomene此代码不在CR主题中,因为“
并且代码不是真正的代码(现在没有)“请阅读CRNatural idea(+1)的页面,但鉴于ES6+的几乎普遍支持,
地图
难道不会比对象更自然吗?@JohnColeman一个
地图
会做什么,而一个简单的对象做不到?当然有点基于观点,但是
hasOwnProperty
是一个笨拙的锅炉板,它可以追溯到JavaScript对字典类型数据结构没有很好的支持的时候。使用
Map
替换为
if-mapping.has(key)
,但代码本质上是相同的。创建映射更详细。谢谢这就是我对json对象的意思,我不知道好的lol:P我会这么做,肯定会让代码看起来更好谢谢!自然理念(+1)但鉴于ES6+的几乎普遍支持,
Map
难道不是比一个对象更自然吗?@JohnColeman
Map
会做什么,而一个简单的对象做不到?当然有点基于观点,但是
hasOwnProperty
是一个笨拙的锅炉板,它可以追溯到JavaScript对字典类型数据结构没有很好的支持的时候。使用
Map
替换为
if-mapping.has(key)
,但代码本质上是相同的。创建映射更详细。谢谢这就是我对json对象的意思,我不知道好的lol:P我会这么做,肯定会让代码看起来更好谢谢
arr[arr.indexOf(zoo.king)]
与刚才的
zoo.king
是一样的,但不需要删除数组吗?我不知道你想要什么我不知道你在问什么。我不想取得任何成就,我没有写这个问题。我只是不知道这是如何回答这个问题的。
arr
的用途是什么?这应该与问题中的
animalarray
相同吗?
arr[arr.indexOf(zoo.king)]
与刚才的
zoo.king
相同。是的,但不需要删除数组吗?我不知道你想要什么我不知道你在问什么。我不想取得任何成就,我没有写这个问题。我只是不知道这是如何回答这个问题的。
arr
的目的是什么?这应该与问题中的
animalarray
相同吗?