用JavaScript替换数组中的最后N项

用JavaScript替换数组中的最后N项,javascript,arrays,Javascript,Arrays,我试图找到替换数组中最后N个项的最佳方法。我想到了以下几点: 从阵列中删除N个项目: arr = arr.slice(-N); 通过array.push()进行迭代以获得所需插入的数量,添加所需的值,如下所示: for(var i=0; i<=N; i++) { arr.push(new value); } for(var i=0;i一个简单的反向循环就足够了: for(i = arr.length - 1; i >= arr.length - N; i--) { a

我试图找到替换数组中最后N个项的最佳方法。我想到了以下几点:

从阵列中删除N个项目:

arr = arr.slice(-N);
通过array.push()进行迭代以获得所需插入的数量,添加所需的值,如下所示:

for(var i=0; i<=N; i++) {
  arr.push(new value);
}

for(var i=0;i一个简单的反向循环就足够了:

for(i = arr.length - 1; i >= arr.length - N; i--) {
    arr[i] = new_value;
}

删除以任何索引值开始和结束的数组,并可以选择向该数组添加值

示例:

var arr = [1, 2, 3, 4];
arr.splice(-1, 1, 'a', 'b', 'c');

一种更实用的方法是混合使用切片和贝壳

function replaceItemsAtEnd(array, replacements) {
  var start = array.slice(0, array.length - replacements.length);
  return start.concat(replacements);
}
这样做的好处是不改变原始数组


使用数组作为替换项意味着您也不局限于使用相同的值进行替换。

我首先想到的是Tarun解决方案,但我会稍微更改它以避免数组长度小于N的情况。因此,它变成:

  for(i = arr.length - 1; i>= 0 && N > 0; i--) {
      arr[i] = new_value;
      N--;
   }
那么:

var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
var anotherArr = [1, 2, 3];

Array.prototype.splice.apply(arr, [arr.length-anotherArr.length, anotherArr.length].concat(anotherArr));

您可以使用array.fill()来执行此操作

var-arr=[1,2,3,4,5,6];
var N=3;
var newValue=0;
arr=arr.fill(新值,-1*N);
document.getElementById(“输出”).innerHTML=arr;


您需要推送的值是否相同?@aduch Yep。所有要插入的值都相同。我本来打算建议使用splice,但Tarun的回答最具表现力:)FWIW,Edge也支持它(MDN页面上还没有提到)。您的循环条件稍有错误,应该是
i>=arr.length-N
,因为问题询问如何替换最后的
N
项。如果N==2和i==8,此循环将从7替换为2,即六个值而不是两个值,对吗?哦,我看到您已修复。美好的但是它是arr.length-1-N,或者只是在循环体中使用N>0和减量N。