我有array
代表具有不同值的图表的点,如下所示:
var array = [5, 3, 4, 1, 2];
我想循环遍历它并创建一个新数组,其中新值为:
这意味着array[0]
将保持在同一位置,而其他值将被推到一个位置。新数组应如下所示:
var newArray = [5, 4, 3, 3.5, 4, 2.5, 1, 1.5, 2];
您对如何实现这一目标有所了解吗?在此先感谢您的回复!
答案 0 :(得分:2)
var array = [5, 3, 4, 1, 2];
var newArr = [array[0]]; // start the array with the first from the original
array.reduce((a, b) => {
newArr.push((a + b) / 2, b);
return b;
});
console.log(newArr);
答案 1 :(得分:1)
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);
}
答案 2 :(得分:1)
您将要遍历原始数组,将每个数字推送到新数组,如果您不在最终元素上,请获得array[i]
和array[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)
}
}
答案 3 :(得分:1)
或以功能性,无副作用的方式:
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), [])
答案 4 :(得分:1)
如果您可以修改原始数组:
var array = [5, 3, 4, 1, 2],
len = array.length * 2 - 2;
for (var i = 1; i < len; i = i + 2) {
array.splice(i, null, (array[i-1] + array[i]) / 2);
}
console.log(array);
&#13;
答案 5 :(得分:0)
let createdArr = []
[5, 3, 4, 1, 2].forEach( (item,index,arr) => {
createdArr.push(item)
if( index !== 0 && index + 1 !== arr.length ){
createdArr.push( (item + arr[ index + 1]) / 2 )
}
} )