亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript實現從數組中選出和等于固定值的n個數

2019-11-20 14:11:57
字體:
來源:轉載
供稿:網友

現實生活中的問題,可能會抽象為這樣一種數據模型:

從一個數組中挑選出幾個數,讓這幾個數相加的和為指定的值。

大多數讀者應該有過網購的經歷,網購一般會有個湊單功能,假如讀者買了70元的商品,但是必須滿100元才能包郵,這時系統會自動推薦一些商品,加起來差不多就100塊錢了。

系統如何確定推薦哪些商品呢?這其實就是剛剛提到的模型,我們可以把熱銷商品的價格放到一個數組中,然后利用算法,找出數組中哪些價格的和為30元。

廢話少說,小菜給大家分享一個JavaScript版本的算法實現。

算法代碼:

function getCombBySum(array,sum,tolerance,targetCount){var util = {/*get combination from arrayarr: target arraynum: combination item lengthreturn: one array that contain combination arrays*/getCombination: function(arr, num) {var r=[];(function f(t,a,n){if (n==0){return r.push(t);}for (var i=0,l=a.length; i<=l-n; i++){f(t.concat(a[i]), a.slice(i+1), n-1);}})([],arr,num);return r;},//take array index to a arraygetArrayIndex: function(array) {var i = 0,r = [];for(i = 0;i<array.length;i++){r.push(i);}return r;}},logic = {//sort the array,then get what's we needinit: function(array,sum) {//clone arrayvar _array = array.concat(),r = [],i = 0;//sort by asc_array.sort(function(a,b){return a - b;});//get all number when it's less than or equal sumfor(i = 0;i<_array.length;i++){if(_array[i]<=sum){r.push(_array[i]);}else{break;}}return r;},//important functioncore: function(array,sum,arrayIndex,count,r){var i = 0,k = 0,combArray = [],_sum = 0,_cca = [],_cache = [];if(count == _returnMark){return;}//get current count combinationcombArray = util.getCombination(arrayIndex,count);for(i = 0;i<combArray.length;i++){_cca = combArray[i];_sum = 0;_cache = [];//calculate the sum from combinationfor(k = 0;k<_cca.length;k++){_sum += array[_cca[k]];_cache.push(array[_cca[k]]);}if(Math.abs(_sum-sum) <= _tolerance){r.push(_cache);} }logic.core(array,sum,arrayIndex,count-1,r);}},r = [],_array = [],_targetCount = 0,_tolerance = 0,_returnMark = 0;//check data_targetCount = targetCount || _targetCount;_tolerance = tolerance || _tolerance;_array = logic.init(array,sum);if(_targetCount){_returnMark = _targetCount-1;}logic.core(_array,sum,util.getArrayIndex(_array),(_targetCount || _array.length),r);return r;}

調用說明:

array: 數據源數組。必選。

sum: 相加的和。必選。

tolerance: 容差。如果不指定此參數,則相加的和必須等于sum參數,指定此參數可以使結果在容差范圍內浮動??蛇x。

targetCount: 操作數數量。如果不指定此參數,則結果包含所有可能的情況,指定此參數可以篩選出固定數量的數相加,假如指定為3,那么結果只包含三個數相加的情況??蛇x。

返回值:返回的是數組套數組結構,內層數組中的元素是操作數,外層數組中的元素是所有可能的結果。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美重口另类videos人妖| 亚洲一区二区三区成人在线视频精品| 91精品国产亚洲| 国内免费精品永久在线视频| 欧美成人在线网站| 中文字幕精品国产| 精品久久久久久国产| 2018日韩中文字幕| 国产精品色午夜在线观看| 成人激情综合网| 国产精品日韩欧美| 欧美老肥婆性猛交视频| 91精品国产综合久久久久久久久| 九九久久精品一区| 亚洲三级 欧美三级| 亚洲人成在线播放| 亚洲午夜国产成人av电影男同| 夜夜嗨av一区二区三区免费区| 亚洲欧美日韩国产中文专区| 亚洲a级在线观看| 久久精品福利视频| 亚洲视频电影图片偷拍一区| 九九热这里只有精品免费看| 97精品国产aⅴ7777| 日韩精品欧美激情| 亚洲精品视频免费在线观看| 国产精品免费网站| 欧美日韩国产色| 中文字幕国产亚洲2019| 日本韩国欧美精品大片卡二| 亚洲一区av在线播放| 欧美猛少妇色xxxxx| 中国人与牲禽动交精品| 久久久91精品| 欧美人成在线视频| 久久五月天综合| 久久久av网站| 亚洲欧美国产视频| 亚洲精品xxx| 亚洲第一男人天堂| 国产mv免费观看入口亚洲| 国产精品第七影院| 亚洲精品91美女久久久久久久| 欧美性猛交xxxx富婆弯腰| 日本久久久久久久| 国产精品久久中文| 久久国产视频网站| 亚洲人成亚洲人成在线观看| 精品国产依人香蕉在线精品| 国产视频精品一区二区三区| 欧美乱大交xxxxx| 久久777国产线看观看精品| 久久久久久国产精品三级玉女聊斋| 欧美日韩国产中文字幕| 日韩免费观看在线观看| 亲爱的老师9免费观看全集电视剧| 国产在线精品播放| 一区二区日韩精品| 国产一区二区三区在线播放免费观看| 亚洲精品美女网站| 亚洲一区二区三区乱码aⅴ| 国产成人精品综合久久久| 亚洲国产欧美日韩精品| 成人久久精品视频| 亚洲女人天堂网| 亚洲国产精品久久精品怡红院| 日韩精品在线免费观看| 欧美日韩国产91| 国产性色av一区二区| 日韩美女在线观看一区| 欧美激情网站在线观看| 欧美日韩国产第一页| 亚洲午夜av电影| 精品呦交小u女在线| 国产精品久久久久久久久久久久| 亚洲精品一二区| 欧美与欧洲交xxxx免费观看| 久久影视电视剧免费网站清宫辞电视| 亚洲无线码在线一区观看| 色综合久久久888| 欧美极度另类性三渗透| 亚洲午夜精品视频| 91亚洲精品一区二区| 日韩一中文字幕| 久久天天躁日日躁| 久久69精品久久久久久久电影好| 日韩中文字幕免费| 成人激情黄色网| 亚洲综合精品一区二区| 尤物精品国产第一福利三区| 久久久精品2019中文字幕神马| 久久欧美在线电影| 日韩美女av在线| 日韩精品高清在线| 亚洲国产婷婷香蕉久久久久久| 亚洲成年人在线| 欧美中文字幕视频在线观看| 福利二区91精品bt7086| 日韩69视频在线观看| 亚洲视频一区二区| 精品久久久久久久久久ntr影视| 国产亚洲激情在线| 亚洲午夜国产成人av电影男同| 一区二区三区四区在线观看视频| 青青在线视频一区二区三区| 国产精品香蕉av| 亚洲国产精品人人爽夜夜爽| 国产精品美女www| 国产日韩欧美黄色| 日韩免费视频在线观看| 中国人与牲禽动交精品| 不卡在线观看电视剧完整版| 国产剧情日韩欧美| 欧美人与物videos| 欧美成人免费大片| 欧美猛少妇色xxxxx| 在线观看久久久久久| 麻豆国产va免费精品高清在线| 久久久久国产精品一区| 亚洲在线免费视频| 6080yy精品一区二区三区| 国产亚洲免费的视频看| 欧美高清视频在线| 26uuu另类亚洲欧美日本老年| 亚洲精品视频久久| 欧美视频在线观看 亚洲欧| 亚洲女人被黑人巨大进入al| 国产精品男人的天堂| 欧美日韩成人在线视频| 欧美午夜女人视频在线| 2019中文字幕在线观看| 隔壁老王国产在线精品| 亚洲精品福利资源站| 欧美专区福利在线| 亚洲自拍偷拍色图| 国产精品高清免费在线观看| …久久精品99久久香蕉国产| 91av福利视频| 欧美最顶级丰满的aⅴ艳星| 亚洲剧情一区二区| 中文字幕亚洲无线码在线一区| 久久久噜久噜久久综合| 成人激情视频在线| 91福利视频在线观看| 欧美巨猛xxxx猛交黑人97人| 一区二区三区久久精品| 亚洲缚视频在线观看| 日韩高清中文字幕| 高清一区二区三区日本久| www.99久久热国产日韩欧美.com| 久久久www成人免费精品| 中文字幕在线看视频国产欧美在线看完整| 日韩av网站电影| 亚洲精品美女在线观看| 国产亚洲aⅴaaaaaa毛片| 国产精品一久久香蕉国产线看观看| 亚洲欧洲国产一区| 亚洲成人激情视频| 色偷偷91综合久久噜噜| 日韩欧美高清视频| 欧美黑人视频一区| 亚洲国产成人久久综合| 亚洲黄页网在线观看| 国产精品成人国产乱一区|