Javascript 如何从对象中获取随机键数组,而不是完整列表?
例如,不是从具有10个关键点的对象中获取前5个关键点:Javascript 如何从对象中获取随机键数组,而不是完整列表?,javascript,Javascript,例如,不是从具有10个关键点的对象中获取前5个关键点: var keys = Object.keys(brain.layers[this.layer]).slice(0, 5); 我想随机得到5把钥匙。我知道一些笨重、冗长、迂回的方法,比如: function getRandomNumber(n1, n2) { ... } var list = []; var count = 0; function choose(arr, count, list, max) { for (let pro
var keys = Object.keys(brain.layers[this.layer]).slice(0, 5);
我想随机得到5把钥匙。我知道一些笨重、冗长、迂回的方法,比如:
function getRandomNumber(n1, n2) { ... }
var list = [];
var count = 0;
function choose(arr, count, list, max) {
for (let prop in arr) {
var choice = Math.round(getRandomNumber(0, 1));
if (choice === 1 && count < max && !list.includes(arr[prop])) {
list.push(arr[prop]);
count++;
}
}
if (count >= max) {
return list;
} else {
choose(arr, count, list, max)
}
}
函数getRandomNumber(n1,n2){…}
var列表=[];
var计数=0;
函数选择(arr、计数、列表、最大值){
用于(让道具进入arr){
var choice=Math.round(getRandomNumber(0,1));
如果(选项===1&&countlet arrRand=(a,i=a.length)=>{while(i){a.push(a.splice(Math.random()*i--|0,1)[0])}}
let keys = Object.keys(brain.layers[this.layer])
randSort(keys)
keys=keys.slice(0,5)
这需要一个数组和数组长度,但如果它是现代浏览器,则可以使用默认参数。警告:它会修改传入的数组。要获得真正的(伪)随机排序,请使用类似就地随机排序的方法
let arrRand=(a,i=a.length)=>{while(i){a.push(a.splice(Math.random()*i--|0,1)[0])}}
let keys = Object.keys(brain.layers[this.layer])
randSort(keys)
keys=keys.slice(0,5)
这需要一个数组和数组长度,但如果它是现代浏览器,则可以使用默认参数。警告:它会修改传入的数组。
var-keys=Object.keys(brain.layers[this.layer])。排序(()=>Math.random()-0.5)。切片(0,5)
@JaromandaX虽然-var keys=Object.keys(brain.layers[this.layer]).sort(()=>Math.floor(Math.random()*3)-1.slice(0,5)由于某种原因,代码>似乎“更”随机var keys=Object.keys(brain.layers[this.layer]).sort(()=>Math.random()-0.5)。slice(0,5)
@JaromandaX虽然-var keys=Object.keys(brain.layers[this.layer]).sort(()=>Math.floor(Math.random()*3)-1.slice(0,5)出于某种原因,代码>似乎“更”随机