我有一些数据集:
const dataset = [14, 50, 202, 208, 55];
我必须使用dataset
创建一个新数组,如下所示:
const normalizedDataset = normalize(dataset, 5); // [15, 50, 200, 210, 55]
曾试图写一些功能来做到这一点,但不幸的是我没有大脑来解决这个问题。试过这样:
const normalize = (arr, n) => {
return arr.map(x => {
const y = (x % n) > n / 2 ? x + (n - (x % n)) : (x % n);
return y ? y : x;
});
}
normalize(dataset, 5);
也许有人知道一些libs要做或者如何更新我自己的功能?
答案 0 :(得分:1)
您可以使用map()
和余下的%
运算符,并基于n
以及剩余的计算新数字。
const dataset = [14, 50, 202, 208, 55];
function normalize(data, n) {
return data.map(function(e) {
var m = e % n;
if (m == 0) return e;
else {
if (m > n / 2) return e + (n - m)
else return e - m
}
})
}
console.log(normalize(dataset, 5))
或者带有三元运算符的较短版本可能看起来像这样。
const dataset = [14, 50, 202, 208, 55];
const normalize = (data, n) => {
return data.map(function(e) {
var m = e % n;
return (m != 0) ? (m > (n / 2) ? e + (n - m) : e - m) : e
})
}
console.log(normalize(dataset, 5))
答案 1 :(得分:1)
我想这是最短的解决方案。
const dataset = [14, 50, 202, 208, 55];
function normalize(arr, n){
return arr.map(function(e){
return Math.round(e/n)*n;
})
}
console.log(normalize(dataset, 5));