Javascript/VUE2: Как проверить значение для нескольких совпадений,

#javascript #object #if-statement #vuejs2

Вопрос:

Я пытаюсь создать комбинацию фулл-хауса в игре Yahtzee. (3 одинаковых кубика и 2 одинаковых)

У меня есть функция, которая подсчитывает случаи и будет выводиться здесь после функции генератора случайных кубиков:

    countDice:      {1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0},
 

Я хочу проверить, имеет ли значение 3 и 2. А затем верните 25. Я попытался получить к нему доступ с помощью Object.values и некоторыми другими способами с помощью циклов и т. Д. Я попробовал это с фильтром, но, похоже, это работает только с объектом в массиве, а затем остальная часть моего кода портится.

Я пробовал это в последний раз :

  function has(obj, value) {
                    for(var value in obj) {
                        if(this.countDice.value === 3 this.countDice.value === 2 ) {
                        return 25;
                        }
                    }
 

Ничего не происходит. Я возился с каждым, и с некоторыми. Кажется, я застрял на простой вещи :кто-нибудь может мне помочь?

Ответ №1:

Самый короткий:

 return [2,3].every(x => Object.values(this.countDice).includes(x)) ? 25 : null;
 

И из вашего вопроса следует, что если вы используете VueJS, это будет:

 data(){
    return {
        countDice:{1:0,2:0,3:0,4:0,5:0,6:0},
    }
},
methods:{
    checkCountDice(){
        return [2,3].every(x => Object.values(this.countDice).includes(x)) ? 25 : null;
    }
}
 

Ответ №2:

Вы можете напрямую обратиться к словарю countDice и проверить, имеют ли как 2, так и 3 ненулевые значения

 let countDice = {1: 0, 2: 9, 3: 7, 4: 0, 5: 0, 6: 0};
let isPresent = countDice[2] amp;amp; countDice[3];
console.log(Boolean(isPresent));
if (isPresent) {
// Your logic goes here
}