#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
}