Javascript 满足特定要求后,替换阵列中的多个数字

Javascript 满足特定要求后,替换阵列中的多个数字,javascript,arrays,reduce,Javascript,Arrays,Reduce,在满足数组中计数12(从左起)的要求后替换最后一个值 满足要求后,更换最后一项“1”至“2”之后的所有元件。 如果有更小的建议也可以 var arr = [1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0]; var count = arr.reduce((t, i)=> {return t+i;}, 0); if(count === 12){ var startIndexToBeReplaced = arr.lastIndexOf(1) + 1; var a

在满足数组中计数12(从左起)的要求后替换最后一个值 满足要求后,更换最后一项“1”至“2”之后的所有元件。 如果有更小的建议也可以

var arr = [1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0];
var count = arr.reduce((t, i)=> {return t+i;}, 0);
if(count === 12){
  var startIndexToBeReplaced = arr.lastIndexOf(1) + 1;
  var arr = arr.map((element, index) => index >= startIndexToBeReplaced ? 2 : element);
}
console.log(arr);

结果=[1,1,1,1,1,1,1,1,1,1,1,1,0,1,2,2,2];
如果原始数组是[1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,1,0,0],那么结果应该是[1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,2,2],我正在寻找是否可以使用ecmascript简化它只需在列表中迭代一次,如果索引大于11,则替换元素(使用
forEach
,以便可以就地修改数组):

const arr=[1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0];
arr.forEach((el,i)=>{
如果(i>11)arr[i]=2;
});
控制台日志(arr)为什么不直接使用地图

var arr = [1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0];
arr = arr.map((element, index) => index >= 12 ? 2 : element);
const arr=[1,1,1,1,1,1,1,1,1,1,0,1,0,0,0];
常数resp=arr.map((s=>e=>s>=12?2:(s+=e,e))(0));

控制台日志(resp)
您能简单地显示您期望的输出吗?您只是想用2替换出现在第12个元素之后的任何数字吗?如果原始数组是[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2],那么结果=[1,1,1,1,1,1,1,0,0,0,0];然后结果应该是[1,1,1,1,1,1,1,1,1,1,1,1,0,1,2,2,2,2],我想看看是否可以使用ecmascript简化它