在JavaScript中,我有一组这样的值:
var values = [3452,1234,200,783,77]
我需要做的是将这些值映射到一个新数组,其值应该在10到90之间。
var new_values = [12,48,67,78,90]
有没有办法在原生JS中实现这个目标?
有点卡住:( 感谢
答案 0 :(得分:3)
如果你的意思是 map (为另一个值换一个值),那就是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);
答案 1 :(得分:0)
要钳制:
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));