【问题标题】:Remove random item from array and push to new array从数组中删除随机项并推送到新数组
【发布时间】:2020-05-10 20:51:42
【问题描述】:

提前感谢您!我是编码和学习如何处理数组的新手。我正在尝试从数组(卡片组)中删除随机项目,并填充一个新数组(称为手)。我似乎总是遇到数组的问题是获取一个的结果并创建一个新的函数/数组/等。目前,我正在输出 2 个单独的数组,我似乎无法将它们推入一个。

let deck = ["dA","dQ","dK","dJ","d10","d09","d08",
"d07","d06","d05","d04","d03","d02","hA","hQ","hK",
"hJ","h10","h09","h08","h07","h06","h05","h04","h03"];


var hand = deck.splice(Math.floor(Math.random()*deck.length),1);
    console.log(hand)
var hand = deck.splice(Math.floor(Math.random()*deck.length),1);
console.log(hand);

【问题讨论】:

    标签: arrays array-splice


    【解决方案1】:

    在您的代码中,您只需要推送从splice 方法返回的值,而不是直接分配它。 通过这种方式,每次都会删除一个新值并将其添加到名为hand 的新数组中。希望这可以帮助。 :-)

    let deck = ["dA","dQ","dK","dJ","d10","d09","d08",
            "d07","d06","d05","d04","d03","d02","hA","hQ","hK",
            "hJ","h10","h09","h08","h07","h06","h05","h04","h03"];
    
    var hand = [];
    
    const getSelectedCard = () => deck.splice(Math.floor(Math.random()*deck.length),1)
    
    let selectedCard = getSelectedCard();
    hand.push(...selectedCard) //or hand.push(selectedCard[0])
    console.log(hand);
    
    selectedCard = getSelectedCard();
    hand.push(...selectedCard)
    console.log(hand);

    【讨论】:

    • 我很高兴它有帮助:-)。我很乐意提供帮助。快乐的编码:-) 事实上,这个解决方案可以通过创建多种方法和所有方法来更加简化。但我不想通过提供所有这些东西来混淆。让我知道我是否可以提供帮助
    • 感谢您保持简单。我必须对箭头函数做一点阅读才能完全理解箭头函数的使用。再次感谢。
    • 看看this,让初学者更好地理解箭头函数。
    • 这很有帮助。简单但能解释透彻。
    猜你喜欢
    • 2018-02-15
    • 2021-12-28
    • 2016-07-04
    • 2012-12-09
    • 1970-01-01
    • 2021-06-02
    • 2017-12-12
    • 2016-05-25
    • 2014-07-22
    相关资源
    最近更新 更多