我想从对象数组中检索一个随机对象,返回该对象,并从数组中删除该对象。我的代码很好,但我敢打赌有一种更简洁的方式来做到这一点。这是我的版本:
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句