Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回数组的属性_Javascript_Arrays - Fatal编程技术网

Javascript 返回数组的属性

Javascript 返回数组的属性,javascript,arrays,Javascript,Arrays,我试图构建一副卡片并移除其中一张,将它们各自的名称、套装和价值属性作为单独的元素返回。我创建了一个卡片对象,每个对象都有一个“名称”、“套装”和“价值”,并将其中52个放置在一个“卡片组”数组中。我想从牌组阵列中抽取一张“牌”,并在纸牌游戏中使用它们各自的属性,但不确定如何正确执行。下面是我试图实现这一目标的一个例子 //CARD OBJECT function card(name, suit, value) { this.name = name; this.suit = sui

我试图构建一副卡片并移除其中一张,将它们各自的名称、套装和价值属性作为单独的元素返回。我创建了一个卡片对象,每个对象都有一个“名称”、“套装”和“价值”,并将其中52个放置在一个“卡片组”数组中。我想从牌组阵列中抽取一张“牌”,并在纸牌游戏中使用它们各自的属性,但不确定如何正确执行。下面是我试图实现这一目标的一个例子

//CARD OBJECT
function card(name, suit, value) {
    this.name = name;
    this.suit = suit;
    this.value = value;
}

//NEW DECK ARRAY
var cardsInDeck = new Array();

//INDIVIDUAL CARD OBJECTS IN THE DECK ARRAY
var aceSpades = new card("Ace", "Spades", 1);
cardsInDeck.push(aceSpades);
var twoSpades = new card("Two", "Spades", 2);
cardsInDeck.push(twoSpades);
var threeSpades = new card("Three", "Spades", 3);
cardsInDeck.push(threeSpades);
var fourSpades = new card("Four", "Spades", 4);
cardsInDeck.push(fourSpades);
var fiveSpades = new card("Five", "Spades", 5);
//REPEATED FOR ALL 52 CARDS

//SHUFFLE CARDS
var shuffle = function() {

var theLength = cardsInDeck.length - 1;
var toSwap;
var tempCard;

for (var i = theLength; i > 0; i--) {
    toSwap = Math.floor(Math.random() * i);
    tempCard = cardsInDeck[i];
    cardsInDeck[i] = cardsInDeck[toSwap];
    cardsInDeck[toSwap] = tempCard;
    }
}

shuffle();

//DRAW ONE CARD
var drawOne = function() {
var card = cardsInDeck.slice(cardsInDeck.length - 1);
cardsInDeck.length--;
return card;
}

console.log(drawOne());
我可以得到一张要绘制的“卡”,但它返回一个数组(1),其中包含每张卡的名称、花色和价值……但我不确定如何将这些属性分离并使用它们构建游戏。我确信这很简单,我忽略了一些小问题,但我对编程非常陌生,还没有找到一个特别适用于这个问题的解决方案


任何帮助都将不胜感激。

如果我没有弄错,您可以在此处搜索类似的内容:

//CARD OBJECT
function card(name, suit, value) {
  this.name = name
  this.suit = suit
  this.value = value
}

//NEW DECK ARRAY
var cardsInDeck = new Array()

//INDIVIDUAL CARD OBJECTS IN THE DECK ARRAY
var aceSpades = new card('Ace', 'Spades', 1)
cardsInDeck.push(aceSpades)
var twoSpades = new card('Two', 'Spades', 2)
cardsInDeck.push(twoSpades)
var threeSpades = new card('Three', 'Spades', 3)
cardsInDeck.push(threeSpades)
var fourSpades = new card('Four', 'Spades', 4)
cardsInDeck.push(fourSpades)
var fiveSpades = new card('Five', 'Spades', 5)
cardsInDeck.push(fiveSpades)
//REPEATED FOR ALL 52 CARDS

//DRAW ONE CARD
var drawOne = function() {
  if(cardsInDeck.length > 0){
    return cardsInDeck.splice(Math.random() * (cardsInDeck.length-1),1)[0]  
  }
}

// EXAMPLE EXECUTION
console.log(drawOne())
console.log(drawOne())
console.log(drawOne())
console.log(drawOne())
console.log(drawOne())
console.log(cardsInDeck.length)
执行示例如下所示:


如果我没弄错,你可以在这里搜索类似的内容:

//CARD OBJECT
function card(name, suit, value) {
  this.name = name
  this.suit = suit
  this.value = value
}

//NEW DECK ARRAY
var cardsInDeck = new Array()

//INDIVIDUAL CARD OBJECTS IN THE DECK ARRAY
var aceSpades = new card('Ace', 'Spades', 1)
cardsInDeck.push(aceSpades)
var twoSpades = new card('Two', 'Spades', 2)
cardsInDeck.push(twoSpades)
var threeSpades = new card('Three', 'Spades', 3)
cardsInDeck.push(threeSpades)
var fourSpades = new card('Four', 'Spades', 4)
cardsInDeck.push(fourSpades)
var fiveSpades = new card('Five', 'Spades', 5)
cardsInDeck.push(fiveSpades)
//REPEATED FOR ALL 52 CARDS

//DRAW ONE CARD
var drawOne = function() {
  if(cardsInDeck.length > 0){
    return cardsInDeck.splice(Math.random() * (cardsInDeck.length-1),1)[0]  
  }
}

// EXAMPLE EXECUTION
console.log(drawOne())
console.log(drawOne())
console.log(drawOne())
console.log(drawOne())
console.log(drawOne())
console.log(cardsInDeck.length)
执行示例如下所示:


使用
var card=cardsInDeck.pop()以绘制卡。您不能使用
cardsInDeck.length--
,相反,pop将删除最后一张卡,因此长度将自动减少,对于更少更好的代码,只需使用return而不创建变量,因此您的函数应为:

var drawOne = function() {
   return cardsInDeck.pop();
}
并且,与其手动创建所有卡片,不如使用此选项以获得更少更好的代码:

var cardsInDeck = [];
var suits = ["Spades","Hearts","Clubs","Diamonds"];
var names = ["One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"];
var values = [1,2,3,4,5,6,7,8,9,10,11,12,13];
var card;

for (var i=0; i<suits.length; i++) {
    for (var j=0; j<names.length; j++) {
        cardsInDeck.push(new card(names[j], suits[i], values[j]));
    }
}

使用var card=cardsInDeck.pop()以绘制卡。您不能使用
cardsInDeck.length--
,相反,pop将删除最后一张卡,因此长度将自动减少,对于更少更好的代码,只需使用return而不创建变量,因此您的函数应为:

var drawOne = function() {
   return cardsInDeck.pop();
}
并且,与其手动创建所有卡片,不如使用此选项以获得更少更好的代码:

var cardsInDeck = [];
var suits = ["Spades","Hearts","Clubs","Diamonds"];
var names = ["One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"];
var values = [1,2,3,4,5,6,7,8,9,10,11,12,13];
var card;

for (var i=0; i<suits.length; i++) {
    for (var j=0; j<names.length; j++) {
        cardsInDeck.push(new card(names[j], suits[i], values[j]));
    }
}

这有点让人困惑,但也许你要找的是数组映射操作符?旁注:我希望你不是真的手工构建了52个相对有序的对象,而是编写了一些循环……你只是想从函数中
返回卡片[0]
。很抱歉造成混淆,希望从“牌组”中随机抽取一张“牌”,并使用这些牌的值创建百家乐游戏。我只是被困在如何只得到每张卡片的“值”并将其分配给一个变量上。如果你使用Geeks先生的答案。谢谢你,Andy,Geeks先生的答案和你的评论的组合完成了我想要完成的任务!这有点让人困惑,但也许你要找的是数组映射操作符?旁注:我希望你不是真的手工构建了52个相对有序的对象,而是编写了一些循环……你只是想从函数中
返回卡片[0]
。很抱歉造成混淆,希望从“牌组”中随机抽取一张“牌”,并使用这些牌的值创建百家乐游戏。我只是被困在如何只得到每张卡片的“值”并将其分配给一个变量上。如果你使用Geeks先生的答案。谢谢你,Andy,Geeks先生的答案和你的评论的组合完成了我想要完成的任务!现在,您建议我如何使用“drawOne”功能检索这张卡的价值?我想把每一张牌的“值”分配给一个变量,这样我就可以在百家乐纸牌游戏中使用它了?现在,你建议我如何使用“drawOne”函数检索从牌组中取出的这张牌的值?我想把每张牌的“值”分配给一个变量,这样我就可以在百家乐纸牌游戏中使用它了?