我想从对象数组中检索一个随机对象,返回该对象,然后从数组中删除该对象。我的代码很好,但我敢打赌有一种更简洁的方式来做到这一点。这是我的版本:
let deck = [{...}, {...}, {...}];
function returnCard(deck) {
let element = deck[Math.floor(Math.random() * deck.length)];
removeCard(element);
return element;
}
function removeCard(card) {
deck = deck.filter(function(el) {
return el.name !== card.name;
});
}
这看起来很冗长。我认为我正在努力解决的部分问题是我想返回或重新分配两件事,即卡牌和牌组。
最佳答案
您可以使用Array#splice
方法从数组中删除元素。该方法也恰好将删除的元素作为数组返回;如果您只删除单个元素,则可以访问返回值上的索引0
,本质上从列表中“弹出”单个随机元素。
function popRandom (array) {
let i = (Math.random() * array.length) | 0
return array.splice(i, 1)[0]
}
let array = ['A', 'B', 'C', 'D']
console.log(popRandom(array))
console.log(array)
关于javascript - 从数组中删除一个随机对象并返回它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42591276/