например, предположим, у меня есть массив: [13,7,15,1,10,7,3,18,4,20], у меня есть 2 требования:
- только выбор элементов> 10
- рандомизировать массив результатов
нормальный способ сделать:
let arr=[13,7,15,1,10,7,3,18,4,20];
let result=[];
for(let i=0;i<arr.length;i++){
if(arr[i]>10){
result.push(arr[i]);
}
}
for(let i=0;i<result.length;i++){
const r=Math.floor(Math.random()*result.length);
const temp=result[i];
result[i]=result[r];
result[r]=temp;
}
for(let i=0;i<result.length;i++){
console.log(result[i]);
}
Но я полагаю, что могу сделать это более простым способом: я могу поместить его в случайную позицию во время фильтрации вместо того, чтобы рандомизировать весь массив после получения всего результата, я попытался:
let arr=[13,7,15,1,10,7,3,18,4,20];
let result=[];
for(let i=0;i<arr.length;i++){
if(arr[i]>10){
result.splice(Math.floor(Math.random()*result.length),0,arr[i]);
}
}
for(let i=0;i<result.length;i++){
console.log(result[i]);
}
Но я обнаружил, что это не работает: последний элемент всегда 13:
18
20
15
13
20
15
18
13
Что не так с идеей?