Как поместить объект в массив, а затем вызвать части объекта в этом массиве

Я делаю игру в блэкджек на Javascript, которая требует создания объектов для каждой карты, чтобы несколько карт равнялись 10. Затем я вызываю случайное число и помещаю соответствующую карту в массивдилерАрр, моя проблема заключается в том, когда я хочу добавить значения этих объектов в массиве вместе. Кажется, это невозможно, вот код.

var dealerArr = [];
var playerArr = [];
var dealerTotal = 0;
var playerTotal = 0;
var two = {
  value: 2
}
var three = {
  value: 3
}
var four = {
  value: 4
}
var five = {
  value: 5
}
var six = {
  value: 6
}
var seven = {
  value: 7
}
var eight = {
  value: 8
}
var nine = {
  value: 9
}
var ten = {
  value: 10
}
var jack = {
  value: 10
}
var queen = {
  value: 10
}
var king = {
  value: 10
}
var ace = {
  value: 11
}


function calcTotal(arr) {
  var sum = 0;
  for (var object of arr) {
    sum += object.value;
  }
  return sum;
}

while (calcTotal(dealerArr) < 17) {
  var randomCard = (Math.floor(Math.random() * 13) + 1)
  if (randomCard = 1) {
    dealerArr.push(two);
  } else if (randomCard = 2) {
    dealerArr.push(three);
  } else if (randomCard = 3) {
    dealerArr.push(four);
  } else if (randomCard = 4) {
    dealerArr.push(five);
  } else if (randomCard = 5) {
    dealerArr.push(six);
  } else if (randomCard = 6) {
    dealerArr.push(seven);
  } else if (randomCard = 7) {
    dealerArr.push(eight);
  } else if (randomCard = 8) {
    dealerArr.push(nine);
  } else if (randomCard = 9) {
    dealerArr.push(ten);
  } else if (randomCard = 10) {
    dealerArr.push(jack);
  } else if (randomCard = 11) {
    dealerArr.push(queen);
  } else if (randomCard = 12) {
    dealerArr.push(king);
  } else if (randomCard = 13) {
    dealerArr.push(ace);
  }
  console.log(dealerTotal)
}


person Leo    schedule 21.02.2019    source источник
comment
randomCard === ... один = не сравнивает, а присваивает значение   -  person Jonas Wilms    schedule 21.02.2019
comment
Возможный дубликат Как сравнить значение в javascript   -  person Jake Holzinger    schedule 21.02.2019
comment
Просто чтобы поговорить об игре, имейте в виду, что туз действует как 1 и 11.   -  person Matt    schedule 21.02.2019
comment
Спасибо, Мэтт, я только начинал с простого   -  person Leo    schedule 24.02.2019


Ответы (2)


проблема заключается в том, что вы использовали = вместо == в if заявления.

Одиночное равенство в JS (и многих других языках) выполняет присваивание, а двойное и тройное равенство выполняют сравнение.

Поэтому используйте этот формат вместо этого:

var dealerArr = [];
var playerArr = [];
var dealerTotal = 0;
var playerTotal = 0;
var two = {
  value: 2
}
var three = {
  value: 3
}
var four = {
  value: 4
}
var five = {
  value: 5
}
var six = {
  value: 6
}
var seven = {
  value: 7
}
var eight = {
  value: 8
}
var nine = {
  value: 9
}
var ten = {
  value: 10
}
var jack = {
  value: 10
}
var queen = {
  value: 10
}
var king = {
  value: 10
}
var ace = {
  value: 11
}


function calcTotal(arr) {
  var sum = 0;
  for (var object of arr) {
    sum += object.value;
  }
  return sum;
}

while (calcTotal(dealerArr) < 17) {
  var randomCard = (Math.floor(Math.random() * 13) + 1)
  if (randomCard == 1) {
    dealerArr.push(two);
  } else if (randomCard == 2) {
    dealerArr.push(three);
  } else if (randomCard == 3) {
    dealerArr.push(four);
  } else if (randomCard == 4) {
    dealerArr.push(five);
  } else if (randomCard == 5) {
    dealerArr.push(six);
  } else if (randomCard == 6) {
    dealerArr.push(seven);
  } else if (randomCard == 7) {
    dealerArr.push(eight);
  } else if (randomCard == 8) {
    dealerArr.push(nine);
  } else if (randomCard == 9) {
    dealerArr.push(ten);
  } else if (randomCard == 10) {
    dealerArr.push(jack);
  } else if (randomCard == 11) {
    dealerArr.push(queen);
  } else if (randomCard == 12) {
    dealerArr.push(king);
  } else if (randomCard == 13) {
    dealerArr.push(ace);
  }
  console.log(dealerTotal)
}

person FZs    schedule 21.02.2019

Йонас прав, в JS одиночное = является присваиванием, тогда как == является сравнением, а === является строгим сравнением (сравнение значений и типов)

person Ted Fitzpatrick    schedule 21.02.2019