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

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

為什么最小和最大范圍方法不返回有效輸出

為什么最小和最大范圍方法不返回有效輸出

慕碼人8056858 2022-11-27 16:03:59
我需要一個方法來檢查 和 之間的有效-064.000000 to -180.000000范圍142.000000 to 180.000000。我擁有的范圍對象如下所示:"ranges": {  "range1": {    "min": -180,    "max": -64  },  "range2": {    "min": 142,    "max": 180  }}到目前為止,這是我能夠完成的,但似乎無法正常工作:const mustBeInRangeInclusive = ({ userInput, ranges }) => {  let data_num = _.toNumber(userInput);  for (let i = 0; i < ranges.length; i++) {    return result = data_num >= ranges[i][0] && data_num <= ranges[i][1];  }};有人可以幫我完成這個方法來弄清楚我做錯了什么嗎?預期輸出:-63 -> invalid-64: valid181 -> invalid180: valid141 -> invalid142: valid
查看完整描述

2 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

幾乎沒有編輯,因為問題代碼不斷變化。


第一個問題——訪問對象屬性


如果你有一個數組,你可以通過索引訪問它的值。


let array = [1, 2, 3];

let firstItem = array[0];

let secondItem = array[1];

如果你有對象,你可以通過他們的名字訪問它的屬性。


let someObject = { 'name': 'John', 'age': 21 };

let name = someObject.name;

name = someObject['name'];

如果您有對象數組,則可以結合這兩種方法。


let arrayOfObjects = [

    { 'name': 'John', 'age': 21 },

    { 'name': 'Sam', 'age': 23 }

]

let firstObjectsName = arrayOfObjects[0].name;

第二個問題 - 在第一次迭代時退出循環您一進入循環就 調用returnstatement 使得無法進入第二次迭代。您可以將每次迭代的結果存儲在數組中并在最后返回它。


const mustBeInRangeInclusive = ({ userInput, ranges }) => {

  let results = [];

  let data_num = _.toNumber(userInput);

  for (let i = 0; i < ranges.length; i++) {

    results.push(data_num >= ranges[i].min && data_num <= ranges[i].max);

  }


  return results;

};


查看完整回答
反對 回復 2022-11-27
?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

這個答案基于 OP 的評論請求filters,如果是一個對象,則不能解決問題。

假設您可以更改定義,使用過濾器數組比使用帶有過濾器的對象要容易得多。您可以使用數組every方法來檢查每個元素是否符合條件。用于some檢查某些(一個或多個)元素是否符合條件。

const userInput = document.getElementById("user-input");


const ranges = [ // <- changed definition to an array

  { "min":  0, "max": 100 },

  { "min": 50, "max": 150 },

];


userInput.addEventListener("change", () => {

  const nr = parseInt(userInput.value, 10);

  

  const coversNr = ({min, max}) => min <= nr && nr <= max;

  

  const withinEveryRange = ranges.every(coversNr);

  const withinSomeRange  = ranges.some(coversNr);

  

  console.log("withinEveryRange //=>", withinEveryRange);

  console.log("withinSomeRange  //=>", withinSomeRange );

});

<input id="user-input" type="number" />


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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