Javascript 按自定义数字规范化数组中的数字

Javascript 按自定义数字规范化数组中的数字,javascript,arrays,Javascript,Arrays,我有一些数据集: 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 ?

我有一些数据集:

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);
我曾试图写一些函数来做这件事,但不幸的是我没有大脑来解决这个问题。像这样尝试:

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);
也许有人知道一些lib来做这件事,或者如何更新我自己的函数?

你可以使用
map()
和余数
%
操作符,并根据
n
和剩余的计算新的数字

const数据集=[14,50,202,208,55];
函数规格化(数据,n){
返回data.map(函数(e){
var m=e%n;
如果(m==0)返回e;
否则{
如果(m>n/2)返回e+(n-m)
否则返回e-m
}
})
}

log(normalize(dataset,5))
我想这是最短的解决方案

const数据集=[14,50,202,208,55];
函数规格化(arr,n){
返回arr.map(函数(e){
返回数学整数(e/n)*n;
})
}

日志(规范化(数据集,5))不太清楚您到底想要实现什么。您是如何尝试法线数组的?您所说的“我必须使用数据集创建一个新数组”是什么意思。请解释一下你到底想做什么?@KamranEyyubov我必须做
标准化(数据集,5)
,然后得到
[15,50,200,210,55]
当你说标准化时,你会四舍五入到最近的倍数吗?如中所示,如果参数为5,则数据集中的每个数字将精确舍入到5的最接近倍数?@minidods!很抱歉,我不知道该操作的名称如何四舍五入到最接近的倍数
谢谢你,尼纳德!你帮了我这么多!非常感谢你,卡姆兰!