Это никак не связано с вашим if
заявлением.num1
и num2
не хранят то, что, по вашему мнению, они хранят в вашем коде, как написано.
Array.prototype.splice
возвращает удаленные элементы в новом массиве.Даже если есть только один, вам нужно сослаться на него по индексу 0
:
var Numbers = ['one', 'two', 'three','four','five'];
var LuckyNumbers = ['three', 'four', 'seven']
var num1, num2;
num1 = Numbers.splice(Math.floor(Math.random() * Numbers.length), 1)[0];
num2 = Numbers.splice(Math.floor(Math.random() * Numbers.length), 1)[0];
if([num1, num2].every(item => LuckyNumbers.includes(item))) {
console.log("yep")
} else{
console.log('nope')
}
Редактировать: В интересах дать вам более полный ответ - обратите внимание, что здесь используется splice
не так много проблем, как другие, кажется, указывают.Да, он изменяет массив Numbers
, но массив Numbers
создается заново каждый раз, когда вы вызываете функцию go
.
В этом случае это вполне разумный способ решения этой проблемы, хотяесли вы когда-нибудь захотите провести рефакторинг своего кода таким образом, чтобы Numbers
и LuckyNumbers
были сохранены в некоторой родительской области, вам нужно знать о мутациях:
const Numbers = ['one', 'two', 'three','four','five'];
const LuckyNumbers = ['three', 'four', 'seven']
function go() {
// Slice with no arguments creates a clone of an array...
var numbers = Numbers.slice();
// Note I'm calling splice on `numbers` with a small `n` here...
var num1 = numbers.splice(Math.floor(Math.random() * Numbers.length), 1)[0];
var num2 = numbers.splice(Math.floor(Math.random() * Numbers.length), 1)[0];
if([num1, num2].every(item => LuckyNumbers.includes(item))) {
console.log("yep")
} else{
console.log('nope')
}
}