首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >突破地图

突破地图
EN

Stack Overflow用户
提问于 2018-04-08 20:43:37
回答 5查看 43K关注 0票数 11

所以我有这个问题,如果数组中的值高于输入的值,它应该做一些事情,然后停止循环,不接触数组中的剩余值。以下是到目前为止的代码:

代码语言:javascript
复制
const percentages = [];
let enteredValue = parseInt(event.target.value, 10);

range.map((rangeValue, i) => {
  if (rangeValue <= enteredValue) {
    percentages.push(100);
    enteredValue = enteredValue - rangeValue;
  } else {
    percentages.push(enteredValue * 100 / (rangeValue));

    return;
  }
});
EN

回答 5

Stack Overflow用户

发布于 2018-04-08 20:56:09

使用.some,您可以获得类似于.forEachmapfor循环的迭代功能,但具有通过return执行break的能力。

代码语言:javascript
复制
range.some(function(rangeValue , i) {
  if (rangeValue <= enteredValue) {
    percentages.push(100);
    enteredValue = enteredValue - rangeValue;
    return true
  }
   percentages.push(enteredValue * 100 / (rangeValue));
});

es6 here中阅读有关.some的更多信息

票数 19
EN

Stack Overflow用户

发布于 2018-04-08 20:48:21

只需使用一个很好的旧for循环:

代码语言:javascript
复制
 const percentages = [];
 let enteredValue = parseInt(event.target.value, 10);

 for(const range of ranges) {
   percentages.push(Math.min(100, (enteredValue / range) * 100));
   enteredValue -= range;
   if(enteredValue <= 0) break;
 }
票数 5
EN

Stack Overflow用户

发布于 2018-04-08 21:06:31

其他的答案是完全足够的。但是,我想补充的是,map函数并不是执行迭代的最佳方法。map函数的作用是在数组的每个元素上执行在回调中传递的as参数。然后返回新的数组。因此,当你需要一个数组的变异副本(例如,所有元素乘以10)时,map更有用。

出于您的目的,像常规的For循环这样的其他逻辑将是一个更优雅的解决方案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49717942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档