将值数组映射到具有特定范围的新数组
Map array of values to a new array with a specific range
在JavaScript中,我有一个值数组,如下所示:
var values = [3452,1234,200,783,77]
我需要做的是将这些值映射到一个新的数组,其中的值应该在10到90之间。
var new_values = [12,48,67,78,90]
有没有一种方法可以在原生JS中实现这一点?
有点卡住了:(感谢
如果你的意思是映射(用一个值交换另一个值(,那就是Array#map
:
var new_array = array.map(function(value) {
return /*...calculation on value...*/;
});
它将使用数组中的每个值调用回调,并根据返回的值构建一个新数组(抱歉,我不知道3452是如何变成12的,1234是如何变成48的,等等(
例如,这个加倍:
var array = [1, 2, 3, 4];
var new_array = array.map(function(value) {
return value * 2;
});
console.log(new_array);
如果你的意思是过滤器(只保留范围内的值(,它是Array#filter
:
var new_array = array.filter(function(value) {
return value >= 10 && value <= 90;
});
它将使用数组中的每个值调用回调,并仅使用您返回的truthy值构建一个新数组。我将"介于10和90之间"解释为包含10和90。
示例:
var array = [3452,1234,200,783,77];
var new_array = array.filter(function(value) {
return value >= 10 && value <= 90;
});
console.log(new_array);
在ES2015(又名"ES6"(及以上版本中,这些可以更简洁:
let new_array = array.map(value => /*...calculation on value...*/);
或
let new_array = array.filter(value => value >= 10 && value <= 90);
要夹紧:
var new_values = [3452,1234,200,783,77].map(n => Math.Min(10, Math.max(n, 90)));
过滤:
var new_values = [3452,1234,200,783,77].filter(n => 10 < n && n < 90));
相关文章:
- 如何通过数组更新角度子范围
- 在对象数组中查找多个值的d3范围
- 从指定范围创建字符数组
- 如何创建一个方法来验证数组的范围
- JS:从数组中查找特定范围内的最低/最高数字
- 根据范围过滤角度.js数组
- 将数组传递给函数或确保它在范围内
- Angularjs:访问范围变量数组并计算平均值
- 搜索包含包含所需值的范围的数组
- 如何检查符号是否在范围(或数组)中
- 返回Javascript中给定正则表达式的文本范围数组
- 检查鼠标光标是否在带坐标的数组范围内
- 对在10的倍数的相同范围内的数组值进行分组
- 短范围命名空间数组是什么意思
- AngularJs 帮助,在传递给隔离范围的对象中选择数组时遇到问题
- 如何获取数组第一个元素的范围
- 传递数组 -- 范围
- 查找数组/范围javascript中所有丢失的元素
- 承诺返回未更新的数组范围
- 在数组范围中查找索引