Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对数组内的值进行平均以平滑图形线_Javascript_Arrays_Sorting - Fatal编程技术网

Javascript 对数组内的值进行平均以平滑图形线

Javascript 对数组内的值进行平均以平滑图形线,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一个数组,它用不同的值表示图形的点,如下所示: var array = [5, 3, 4, 1, 2]; 我想循环遍历它并创建一个新数组,其中新值为: 前一个值和后一个值之间的平均值 放在现有的中间 这意味着数组[0]将保持在相同的位置,而其他值将被推到一个位置。新阵列应如下所示: var newArray = [5, 4, 3, 3.5, 4, 2.5, 1, 1.5, 2]; 你对如何实现这一目标有什么想法吗?提前感谢您的回复 var数组=[5,3,4,1,2]; var arr

我有一个
数组
,它用不同的值表示图形的点,如下所示:

var array = [5, 3, 4, 1, 2];
我想循环遍历它并创建一个新数组,其中新值为:

  • 前一个值和后一个值之间的平均值
  • 放在现有的中间
这意味着
数组[0]
将保持在相同的位置,而其他值将被推到一个位置。新阵列应如下所示:

var newArray = [5, 4, 3, 3.5, 4, 2.5, 1, 1.5, 2];
你对如何实现这一目标有什么想法吗?提前感谢您的回复

var数组=[5,3,4,1,2];
var array = [5, 3, 4, 1, 2];

var newArray = [];
newArray.push(array[0]);

for(var i=0; i < array.length-1; i++)
{
  var first = array[i];
  var second = array[i+1];
  var avg = (first+second)/2;
  newArray.push(avg);
  newArray.push(second);
}
var newArray=[]; push(数组[0]); 对于(var i=0;i

您需要在原始数组中循环,将每个数字推送到新的数组中,如果您不在最后一个元素中,则获得
数组[i]
数组[i+1]的平均值。

var array = [5, 3, 4, 1, 2];
var newArray = [];

for (var i = 0; i < array.length; i++)
{
  newArray.push(array[i])
  if (!isNaN(array[i+1])) 
  {
    newArray.push((array[i] + array[i+1]) / 2)
  }
}
var数组=[5,3,4,1,2];
var newArray=[];
对于(var i=0;i
var数组=[5,3,4,1,2];
var newArr=[array[0]];//从原始阵列的第一个阵列开始
array.reduce((a,b)=>{
新到达推力((a+b)/2,b);
返回b;
});

控制台日志(newArr)或以功能性、无副作用的方式:

var array = [5, 3, 4, 1, 2];
var newArray = array.reduce((result, value, index, array) => result.concat(index > 0 && index < array.length ? [(array[index-1] + value)/2, value] : value), [])
var数组=[5,3,4,1,2];
var newArray=array.reduce((结果、值、索引、数组)=>result.concat(索引>0&&index
如果您可以修改原始阵列:

var数组=[5,3,4,1,2],
len=array.length*2-2;
对于(变量i=1;iconsole.log(数组)请显示您已经完成的工作。代码最好。如果您在答案中找到解决方案,请确保将其标记为正确。
var array = [5, 3, 4, 1, 2];
var newArray = array.reduce((result, value, index, array) => result.concat(index > 0 && index < array.length ? [(array[index-1] + value)/2, value] : value), [])