javascript - 将属性对象转换为它的值

标签 javascript arrays object

可以说,一方面我有一个对象,另一方面有一个包含该对象的某些属性的数组。 如何将该属性数组转换为通过函数传递的值,而无需在函数“转换”中手动引入引号?

var blackjack = {
  "A": 1 ,
  "2": 2,
  "3": 3,
  "4": 4,
  "5": 5,
  "6": 6,
  "7": 7,
  "8": 8,
  "9": 9,
  "10":10,
  "J": 10,
  "Q": 10,
  "K": 10
  }


var reparto=function(){
var repart=[];

for (var i=0;i<1;i++)
{
var randomchoice = Math.random();
// probabilidad de cada carta es de 1/13
if(randomchoice<=0.0769231){
    repart.push("A")
}else if(randomchoice> 0.0769231 && randomchoice<=0.0769231*2){
    repart.push(2)
}else if(randomchoice>0.0769231*2 && randomchoice <=0.0769231*3){
    repart.push(3)
  }else if(randomchoice> 0.0769231*3 && randomchoice<=0.0769231*4){
      repart.push(4)
  }else if(randomchoice>0.0769231*4 && randomchoice <=0.0769231*5){
      repart.push(5)
    }else if(randomchoice> 0.0769231*5 && randomchoice<=0.0769231*6){
        repart.push(6)
    }else if(randomchoice>0.0769231*6 && randomchoice <=0.0769231*7){
        repart.push(7)
      }else if(randomchoice> 0.0769231*7 && randomchoice<=0.0769231*8){
          repart.push(8)
      }else if(randomchoice>0.0769231*8 && randomchoice <=0.0769231*9){
          repart.push(9)
        }else if(randomchoice> 0.0769231*9 && randomchoice<=0.0769231*10){
            repart.push(10)
        }else if(randomchoice>0.0769231*10 && randomchoice <=0.0769231*11){
            repart.push("J")
          }else if(randomchoice>0.0769231*11 && randomchoice <=0.0769231*12)
     {
              repart.push("Q")
            }else if(randomchoice>0.0769231*12){
              repart.push("K")
            }

          }

        return repart;
     } 


  var jugar = document.getElementById('start')
  var mas = document.getElementById('hit')
  var mantener = document.getElementById('stand')
  var cuerpo= document.getElementsByTagName('body')[0]
  var contador_universal_cli=[]
  var contador_universal_dea=[]
  var recuadro_cliente = document.createElement('div');
  recuadro_cliente.setAttribute('class','tabla_cliente');

// EVENT
  jugar.onclick= function(){
  for (var i = 0; i<4;i++){
  var card = document.createElement('div');
  var rdo= reparto()
  var texto =document.createTextNode(rdo);
  // var texto =document.createTextNode(reparto());
  card.appendChild(texto);
  cuerpo.appendChild(card);
  if(i%2==0){
  //como solucionar esto para aplicar las clases?
  card.setAttribute("class","cartas_dea")
  contador_universal_cli.push(rdo);
  // contador_universal_cli.push(reparto());
  }
  else{
  card.setAttribute("class","cartas_cli")
  contador_universal_dea.push(rdo);
  // contador_universal_dea.push(reparto());
    }

    }
  //  console.log(contador_universal_cli+" "+contador_universal_dea)

    }

数组将是:“contador_universal_cli”

最佳答案

您可以使用Array#map()

您需要在数组中添加引号arr,否则KJ将被解释为变量

var blackjack = {
  "A": 1,
  "2": 2,
  "3": 3,
  "4": 4,
  "5": 5,
  "6": 6,
  "7": 7,
  "8": 8,
  "9": 9,
  "10": 10,
  "J": 10,
  "Q": 10,
  "K": 10
};


var arr = [8, 9, 'K', 'J'];

console.log(arr.map(a=>blackjack[a]));

如果您不想在数组中使用引号,可以使用以下解决方案:Array.from(..)

var blackjack = {
  "A": 1,
  "2": 2,
  "3": 3,
  "4": 4,
  "5": 5,
  "6": 6,
  "7": 7,
  "8": 8,
  "9": 9,
  "10": 10,
  "J": 10,
  "Q": 10,
  "K": 10
};

var arr = Array.from('89KJ');

console.log(arr.map(a=>blackjack[a]));

关于javascript - 将属性对象转换为它的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43343492/

相关文章:

java - 逐行读取文件并将行添加到数组中

将 char 数组的值复制到二维数组

JavaScript 对象按字母顺序排列

javascript - 如何将对象插入数组?

javascript - jquery-ui datepicker 更改 z-index

javascript - 如何使用 Javascript 检索伪元素转换样式值?

c# - 比较两个 ByteArrays C#

c++ - 使用多态基类(包含虚函数)访问时数组元素的类型

jquery 元素中的 javascript indexof

javascript - 如何从复杂的数据结构中删除特定项,同时保留 React-redux 中的状态?