为什么最小和最大范围方法不返回有效输出

我需要一个方法来检查 和 之间的有效-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: valid

181 -> invalid

180: valid

141 -> invalid

142: valid


慕码人8056858
浏览 135回答 2
2回答

白猪掌柜的

几乎没有编辑,因为问题代码不断变化。第一个问题——访问对象属性如果你有一个数组,你可以通过索引访问它的值。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 = [&nbsp; &nbsp; { 'name': 'John', 'age': 21 },&nbsp; &nbsp; { 'name': 'Sam', 'age': 23 }]let firstObjectsName = arrayOfObjects[0].name;第二个问题 - 在第一次迭代时退出循环您一进入循环就 调用returnstatement 使得无法进入第二次迭代。您可以将每次迭代的结果存储在数组中并在最后返回它。const mustBeInRangeInclusive = ({ userInput, ranges }) => {&nbsp; let results = [];&nbsp; let data_num = _.toNumber(userInput);&nbsp; for (let i = 0; i < ranges.length; i++) {&nbsp; &nbsp; results.push(data_num >= ranges[i].min && data_num <= ranges[i].max);&nbsp; }&nbsp; return results;};

白衣非少年

这个答案基于 OP 的评论请求filters,如果是一个对象,则不能解决问题。假设您可以更改定义,使用过滤器数组比使用带有过滤器的对象要容易得多。您可以使用数组every方法来检查每个元素是否符合条件。用于some检查某些(一个或多个)元素是否符合条件。const userInput = document.getElementById("user-input");const ranges = [ // <- changed definition to an array&nbsp; { "min":&nbsp; 0, "max": 100 },&nbsp; { "min": 50, "max": 150 },];userInput.addEventListener("change", () => {&nbsp; const nr = parseInt(userInput.value, 10);&nbsp;&nbsp;&nbsp; const coversNr = ({min, max}) => min <= nr && nr <= max;&nbsp;&nbsp;&nbsp; const withinEveryRange = ranges.every(coversNr);&nbsp; const withinSomeRange&nbsp; = ranges.some(coversNr);&nbsp;&nbsp;&nbsp; console.log("withinEveryRange //=>", withinEveryRange);&nbsp; console.log("withinSomeRange&nbsp; //=>", withinSomeRange );});<input id="user-input" type="number" />
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript