从数组中删除随机对象并将其返回

时间:2017-03-04 02:10:49

标签: javascript arrays filter

我想从一个对象数组中检索一个随机对象,返回该对象,并从数组中删除该对象。我的代码很好,但我敢打赌,这样做的方式要简洁得多。这是我的版本:

<Button Command="{Binding ClickCommand}" Style="{StaticResource RedButtonStyle}">MyButton</Button>

这看起来很冗长。我认为我所挣扎的部分原因是我想要回归,或者同时重新分配两件事,卡片和套牌。

2 个答案:

答案 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]