我想从一个对象数组中检索一个随机对象,返回该对象,并从数组中删除该对象。我的代码很好,但我敢打赌,这样做的方式要简洁得多。这是我的版本:
<Button Command="{Binding ClickCommand}" Style="{StaticResource RedButtonStyle}">MyButton</Button>
这看起来很冗长。我认为我所挣扎的部分原因是我想要回归,或者同时重新分配两件事,卡片和套牌。
答案 0 :(得分:3)
您可以使用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)
答案 1 :(得分:1)
如果您不介意使用第三方库,则应查看Lodash _.remove功能:https://lodash.com/docs/4.17.4#remove
var array = [1, 2, 3, 4];
var evens = _.remove(array, function(n) {
return n % 2 == 0;
});
console.log(array);
// => [1, 3]
console.log(evens);
// => [2, 4]