概率算法(用于抽奖等场景)
let gifts = [ { "name":"mac", "prop":1 }, { "name":"红米", "prop":10 }, { "name":"u盘", "prop":40 }, { "name":"香皂", "prop":49 } ]; function getResult(arr){ var leng = 0; for(var i=0; i<arr.length; i++){ leng+=arr[i] //获取总数 } for(var i=0; i<arr.length; i++){ var random = parseInt(Math.random()*leng); //获取 0-总数 之间的一个随随机整数 if(random<arr[i]){ return i //如果在当前的概率范围内,得到的就是当前概率 } else { leng-=arr[i] //否则减去当前的概率范围,进入下一轮循环 } } } let gArr = []; for(var i=0; i<gifts.length; i++){ gArr.push(gifts[i]['prop']) } console.log(gifts[getResult(gArr)]['name'])