JavaScript以最佳方式缩短长行

时间:2019-07-28 10:29:24

标签: javascript

我写一个条件和条件的行太长。我试图以最好的方式缩短线。 这是我的状况。

if (me == 'apple' && you || me =='orange' || me == 'mango' || me == 'peanut' || me == 'coconut' || me == 'papaya' || me == 'grief'){
    console.log('you some thing')
}

最长的代码行看起来不太好。我该如何实现?

4 个答案:

答案 0 :(得分:5)

在测试值是否与值集合之一匹配时,将它们放入数组中。

const fruits = [ 'orange', 'mango', etc ];

然后测试以查看该值是否在数组中:

if (fruits.includes(me)) ...

您仍然需要包括布尔值链的第一部分,因为这不是一组简单的OR。

答案 1 :(得分:2)

const food = ['apple', 'orange', 'mango', 'peanut', 'coconut', 'papaya', 'grief']
food.indexOf('apple') // 0
food.includes('apple') // true

您可以使用indexOf来简单地检查它是否在数组中。 indexOf返回位置,但如果为-1,则表示该项目在数组中不存在

您不仅限于indexOf,还可以使用include,它会返回一个布尔值,告诉您数组中是否存在该值

在if中进行简化将导致:

最后,您仍然必须包括&&您,但这应该可以解决手动检查每个变量是否都已写入的情况

答案 2 :(得分:2)

数组中所有可能的条件,并使用数组include方法来缩短条件。

var allFruits = ['apple', 'orange', 'mango', 'peanut', 'coconut', 'papaya', 'grief'];
var you = true;
var me = 'orange';

if (allFruits.includes(me) && you){
    console.log('you some thing')
}

// Below code is the special condition where apple and you relation needs to maintain.
if ((allFruits.includes('me') && me === 'apple' && you) || (allFruits.includes(me) && me !== 'apple' && !you)){
    console.log('you some thing')
}

答案 3 :(得分:1)

一种方法是使用Map,这比使用数组IMO更好,因为访问时间将是O(1)

let newMap = new Map ([['orange','orange']....])

然后使用

if(newMap.has(me))
相关问题