亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用JavaScript查找并添加多個對象分數以最接近給定值

使用JavaScript查找并添加多個對象分數以最接近給定值

繁星點點滴滴 2022-10-27 14:43:47
我有一個對象數組:[   {     score: 1,   },   {     score: 2,   },   {     score: 4,   },   ]我有一個給定的值,一個數字。例如:值為6我的目標是獲取對象,使它們的分數(自己添加)最接近值(這里:6)我的第一步是檢查對象分數是否等于該值。如果不是這樣,我不知道如何實現這一點。使用上面的數組,對于6 ,我需要選擇第二個和第三個,因為它是添加分數等于6 (4 + 2)的唯一組合但是,假設第三個對象的分數是 3,我需要選擇 3 個對象才能獲得6。有時我無法獲得價值,所以我只需要成為最接近的人。我不想讓你創建一個算法,但我需要知道我應該遵循什么路徑才能有效地實現這一點,因為我完全不知道如何實現這一點。
查看完整描述

1 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

使用遞歸。

基本上從檢查第一個分數的函數調用開始。如果它大于或等于最終分數,則返回該值。如果它小于分數,則再次調用該函數,并將新分數作為參數傳遞。如果下一個分數加上前一個分數大于或等于該分數,則返回該值。如果不是,則繼續進行,直到分數大于或等于該值。

現在,您還必須檢查哪個最終得分最接近,不一定哪個更大(例如,您可以得到 10 作為較大的值,而較小的值是 5,這更接近,所以在這種情況下,您需要選擇 5)。

所以要解決這個問題,你需要做同樣的事情,再次,相反。從對第一個分數值的函數調用(不同的函數)開始。如果等于或小于最終分值,則返回。如果它大于最終分數,則繼續,并再次調用相同的函數,將之前的分數作為參數。如果新分數加上剛剛檢查的上一個分數小于或等于最終值,則返回它。如果它更大,則繼續前進,直到到達終點。如果您已經到達終點并且所有添加的值仍然更大,那么只需返回最后一個值。

現在您總共有 2 個返回值,來自這兩個不同的函數。現在您只需將每個值與最終得分(即絕對值)之間的距離進行比較。假設你的分數是6,一個結果是8,另一個是4。因此,取一個變量列表distHigher并將其設置為8 - 6,然后創建另一個變量 ,distLower并將其設置為6 - 4,然后確定哪個數字更小,這就是您的答案。


查看完整回答
反對 回復 2022-10-27
  • 1 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號